如何使用nginx proxy_pass保存请求的URL

我正在尝试使用瘦应用程序服务器,并有一个问题。

当nginx使用proxy_pass http://my_app_upstream;将请求代理到精简(或独angular兽)时proxy_pass http://my_app_upstream; 应用程序接收由nginx发送的修改的URL( http://my_app_upstream )。

我想要的是通过原来的URL和原来的请求从客户端没有任何修改,因为应用程序严重依赖于它。

nginx的文档说:

如果有必要以未处理的forms传输URI,则应使用伪指令proxy_pass,而不使用URI部分。

但我不明白如何configuration,因为相关的示例实际上是使用URI:

 location /some/path/ { proxy_pass http://127.0.0.1; } 

那么你能帮我搞清楚如何保留客户端的原始请求URL吗?

我认为proxy_set_header指令可以帮助:

 location / { proxy_pass http://my_app_upstream; proxy_set_header Host $host; # ... } 

只是proxy_set_header主机$主机丢失我的情况下的端口。 解决:

 location / { proxy_pass http://BACKENDIP/; include /etc/nginx/proxy.conf; } 

然后在proxy.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 URL和Host中的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; } } 

在这里find: https : //opensysnotes.wordpress.com/2016/11/17/nginx-proxy_pass-with-absolute-url/