Назад | Перейти на главную страницу

Как скрыть внутренний URL / URI с помощью обратного прокси Nginx

Наша компания разрабатывает новое решение SaaS, которое будет использоваться торговыми посредниками и их клиентами. Для клиентов наших торговых посредников решение должно быть оформлено так, как будто это программное обеспечение от самого торгового посредника. Это полностью реализовано, за исключением одного URL.

Я провел много исследований, как скрыть URL / URI, и обратный прокси-сервер кажется лучшим решением. Я читал кое-что о различных программных приложениях, которые я могу использовать для создания обратного прокси, и Nginx кажется идеальным для этой работы.

Я установил новый сервер CentOS и установил на него Nginx. Это было довольно просто (даже для меня, как Linix noob). После некоторой борьбы с файлом конфигурации я нашел, как настроить Nginx как обратный прокси.

Теперь, когда я просматриваю свой IP-адрес прокси (например, 192.168.1.100/SaaS), я вижу решение SaaS с другим IP-адресом. В адресной строке я вижу ip обратного прокси, именно так, как хотелось!

После того, как я нажму ссылку или кнопку в решении SaaS, IP-адрес в адресной строке изменится на настоящий IP-адрес решения SaaS.

Я читаю этот, этот, этот и многие другие темы, но я не могу заставить это работать.

Часть моей конфигурации "местоположение" выглядит так:

location /SaaS {
        proxy_pass http://192.168.1.200/login/;
}

Как только измените его на это (правильную конфигурацию я нашел в Интернете в нескольких статьях)

location /SaaS {
        proxy_pass http://192.168.1.200/login;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        include /etc/nginx/proxy_params;
}

У меня появляется ошибка «Страница, которую вы ищете, не найдена». из Nginx. Что я не так?

вам нужно либо использовать плагин поиска / замены, либо обновить каждую ссылку в вашем приложении SaaS, чтобы использовать IP-адрес nginx (вместо этого настоятельно рекомендуется использовать DNS)

https://www.nginx.com/resources/wiki/modules/substitutions/

замените IP-адрес бэкэнда на IP-адрес прокси, обычно можно переписать $ host, как у вас, но кажется, что ваши ссылки не используют переменную для установки своего URL-адреса.

Пример:

server {
    listen       80;
    listen  [::]:80;
    server_name  sub-test.jacobdevans.com;
    root         /var/www/html/test;
 location / {

            sub_filter 'abc-test.jacobdevans.com' 'sub-test.jacobdevans.com';
            sub_filter_once off;
        }

}

server {
    listen       80;
    listen  [::]:80;
    server_name  abc-test.jacobdevans.com;
    root         /var/www/html/test;

 location / {

            sub_filter '123-test.jacobdevans.com' 'abc-test.jacobdevans.com';
            sub_filter_once off;
        }

}

server {
    listen       80;
    listen  [::]:80;
    server_name  123-test.jacobdevans.com;
    root         /var/www/html/test;

 location / {

            sub_filter 'sub-test.jacobdevans.com' '123-test.jacobdevans.com';
            sub_filter_once off;

        }
}

http://sub-test.jacobdevans.com/