转载:
http://6127728.blog.51cto.com/6117728/1294095
现象:
1、内网nginx服务器提供web的端口为8080;
2、通过路由的转换,将8080端口映射为外网的8090端口(www.test.com);
3、访问二级目录www.test.com:8090/test,此时nginx会出现访问出错,并自动更改端口为内网的8080,即www.test.com:8080/test/;
4、排除了nginx自动添加斜杠的问题,因为nginx从0.8.48这个版本后就已经设置为自动添加了,即
server_name_in_redirect off;
默认是off了
原因:
通过端口映射时,nginx会自动添加内网端口,修改路径导致路径访问出错;
解决:
在server里面加入port_in_redirect off;关闭自动添加端口
对于做了外网映射的,可以采用下列方案:
https://segmentfault.com/q/1010000003805730
场景:在第三方架设nginx反向代理,服务器在远程,第三方开放了8800端口
访问xx.xx.xx.xx:8800 出现302重定向 紧接着400 地址为xx.xx.xx.xx丢失了8800端口(就是转向默认的80端口)
如果手动加上8800端口就可以正常访问
附配置
server {
listen 8800;
server_name localhost xxxxx;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass xxxxx;
proxy_set_header Host $host:8800;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}