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

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

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

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

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

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

Я прочитал это, это, это и еще много тем, но я не могу заставить это работать.

Моя часть конфигурации "location" выглядит следующим образом:

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. Что я не прав?

1 ответ

Вам нужно либо использовать плагин поиска / замены, либо обновить каждую ссылку в вашем SaaS-приложении, чтобы использовать nginx ip (вместо этого настоятельно рекомендуется использовать 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/

Другие вопросы по тегам