我的设置如下:
问题是我的Nginx将请求redirect到端口8529,并且出现在像http://some.domain.com:8529/foo这样的URL中,这不是我想要完成的。
我现在的nginx sites-available相关文件如下:
server { listen 80; server_name some.domain.com; location / { proxy_pass http://localhost:8529/foo; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; } }
其中some.domain.com位于指向127.0.0.1 /etc/hosts 。
任何提示?
无论是你的上游服务器发出redirect,你禁止nginx重写与proxy_redirect off; 并通过在proxy_pass指令中丢失斜线或您的应用程序正在构build这些URL。
注意:正如Alexey所说,在这种情况下,尾部的斜杠是很重要的,因为nginx将移除匹配位置前缀的标准化URI的一部分,即/在将其附加到proxy_pass URI之前。 所以你的后台服务器会收到/foobar的请求,而你最有可能在等待/foo/bar 。
在代理期间隐藏端口需要服务器主体中的这两行:
server_name_in_redirect off; proxy_set_header Host $host:$server_port;
conf是这样的:
server { listen 80; server_name example.com; server_name_in_redirect off; proxy_set_header Host $host:$server_port; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8080; } access_log off; }