Как скрыть внутренний 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;
}
}