Как сохранить url-адрес запроса с помощью nginx proxy pass
Я пытался использовать тонкий сервер приложений и один вопрос.
когда nginx прокси запрос на тонкий (или единорог) с помощью proxy_pass http://my_app_upstream;
приложение получает измененный URL-адрес, отправленный nginx (http://my_app_upstream
).
Я хочу передать исходный URL-адрес и исходный запрос от клиента без каких-либо изменений, поскольку приложение сильно зависит от него.
nginx'doc говорит:
Если это необходимо передать URI в затем в непереработанном виде директивы директива proxy_pass без URI должен быть использован часть.
но я не понимаю, как именно настроить это, поскольку связанный образец фактически использует URI:
location /some/path/ {
proxy_pass http://127.0.0.1;
}
Так не могли бы вы помочь мне выяснить, как сохранить исходный URL запроса от клиента?
6 ответов:
Я думаю
proxy_set_header
просто proxy_set_header Host $host Мисс порт для моего дела. Решается путем:
location / { proxy_pass http://BACKENDIP/; include /etc/nginx/proxy.conf; }
а потом в прокси.conf
proxy_redirect off; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
совершенно без измельчения
absoluteURI
запроса иHost
в заголовке:server { listen 35005; location / { rewrite ^(.*)$ "://$http_host$uri$is_args$args"; rewrite ^(.*)$ "http$uri$is_args$args" break; proxy_set_header Host $host; proxy_pass https://deploy.org.local:35005; } }
найдено здесь: https://opensysnotes.wordpress.com/2016/11/17/nginx-proxy_pass-with-absolute-url/
nginx также предоставляет переменную $http_host, которая будет передавать порт для вас. его конкатенация хоста и порта.
Так что вам просто нужно сделать: Proxy_set_header Host $http_host;