Не устанавливайте proxy_redirect
на off
, это не делает то, что вы думаете. proxy_redirect
выполняет нечто похожее на перезапись URL, например:
location /sales/ {
proxy_pass http://ip_of_the_app:7180/;
proxy_redirect http://ip_of_the_app:7180/ http://$host/sales/;
}
Это позволяет разместить путь / sales /
в другом месте. Но даже в этом случае параметры по умолчанию для proxy_redirect
делают именно это за вас бесплатно. По умолчанию используется перенаправление местоположения во все, что присутствует в proxy_pass
(и параметры по умолчанию используются, если вы вообще не устанавливаете proxy_redirect
или используете proxy_redirect по умолчанию;
).
Вам не нужно устанавливать proxy_redirect
.
Вам не хватает заголовков, которые необходимо отправить в приложение. Самый важный из них - HOST
. Это должно выполнить проксирование по желанию и сохранить правильный URL-адрес в браузере.
location / {
proxy_pass http://ip_of_the_app:7180/;
proxy_set_header HOST $host;
}
Обратите внимание, что приложение по адресу http: // ip_of_the_app: 7180 /
теперь будет получать запрос с заголовком Host: my-app.net
.
Вам также следует подумать об использовании еще пары заголовков:
proxy_set_header Referer $http_referer;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
Это позволит лучше регистрироваться внутри приложения по адресу http: // ip_of_the_app: 7180 /
. X-Forwarded-For
с указанием IP-адреса реального клиента (в отличие от IP-адреса nginx
) и X-Forwarded-Proto
для проверки подключения клиента к nginx
через HTTP или HTTPS.