Компоненты системы:
(источник: snag.gy)
:
- "сервер nginx" - А
- "Сторонний сервер" - B
- "Пользовательский ПК" (браузер) - C
Сервер «А» и пользовательский ПК «С» подключены к одной и той же сети «Сеть А», но сервер «А» и сторонний компьютер «В» подключены к сети «Сеть В». Цель состоит в том, чтобы получить доступ к сторонней машине «B» из пользовательского браузера «C» через сервер «A». Для этого сервер «А» должен использовать обратный прокси стороннего контента. Сервер Nginx установлен и настроен на сервере «А». Правило для обратного прокси:
location ~* ^/3rdparty/(.*)___(.*)___(.*)___(.*)$ {
proxy_pass https://$1.$2.$3.$4?$args;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Используя правило, мы хотели бы сделать обратный прокси для URL: http:///3rdparty/‹3RD_PARTY_IP_URL> => https://‹3RD_PARTY_IP_ADDRESS> Например:
http:// 192.168.237.208/3rdparty/192___168___237___222 => https://192.168.237.222
На самом деле, мы хотим, чтобы все добавленное к URL-адресу было перенаправлено. Например:
http://192.168.237.208/3rdparty/192___168___237___222/blah/blah => https://192.168.237.222/blah/blah
Эта конфигурация работает для нас для какой-то другой настройки, но проблема в этом случае заключается в следующем: на сторонней машине «B» есть другой веб-сервер, который выполняет некоторые перенаправления:
https://192.168.237.222 => https://192.168.237.222/users/sign_in
Итак, окончательный результат, когда мы помещаем нужный URI в браузер:
http://192.168.237.208/3rdparty/192___168___237___222
веб-сервер на «B» берет имя хоста URL-адреса и добавляет правило перенаправления (users/sign_in), в результате чего браузер запрашивает следующий URL-адрес:
https://192.168.237.208/users/sign_in
который недоступен на сервере "A" (на самом деле он есть на "B") => мы получили код ошибки http 302 (временно перемещен). Есть ли какие-то отсутствующие правила конфигурации, которые мы не применили? Или любые другие параметры заголовка http-запроса должны быть обновлены/перенаправлены?