NGINX反向代理proxy_pass配置问题:/acp路径代理时URL附加路径引发404/500错误
NGINX反向代理proxy_pass配置问题:/acp路径代理时URL附加路径引发404/500错误
嗨,我完全懂你的困扰——问题出在proxy_pass的写法上!当你访问/acp路径时,NGINX默认会把/acp这个路径后缀直接追加到目标服务器的URL后面,也就是会请求http://192.168.50.9/acp,但显然你的目标服务器上并没有这个路径,所以才会返回404或500错误。
解决这个问题其实很简单,只需要在proxy_pass的目标URL末尾加上一个斜杠/就行,这样NGINX就会自动去掉匹配的/acp路径,直接代理到目标服务器的根路径。
修改后的/acp location配置应该是这样的:
location /acp { proxy_set_header Host $host; proxy_buffering off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; proxy_pass http://192.168.50.9/; # 这里末尾加了斜杠 }
另外,我注意到你两个location里的proxy_set_header配置完全重复了,其实可以把这些公共配置提到server块里,这样所有location都会自动继承,代码会更简洁易维护:
优化后的完整server块:
server { listen 80; # 公共代理配置,所有location共享 proxy_set_header Host $host; proxy_buffering off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; location / { proxy_pass http://192.168.50.8; } location /acp { proxy_pass http://192.168.50.9/; # 末尾加斜杠去掉/acp路径 } }
这样修改后,当你访问your-domain.com/acp时,NGINX就会把请求转发到http://192.168.50.9/而不是http://192.168.50.9/acp,应该就能解决你的404/500问题了。
备注:内容来源于stack exchange,提问作者Barrie
相关产品推荐
相关产品推荐

