关于端口做过映射导致nginx自动添加内网端口的问题

来源:互联网 发布:佛罗里达大学 知乎 编辑:程序博客网 时间:2024/06/05 06:36

转载:
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;}

}