Nginx 的port_in_redirect 问题解决
网站的结构是这样的:
最前面是防火墙,然后是F5,F5分发给后端的nginx,nginx再转发给tomcat
其中nginx用的不是默认的80端口,而是10080
部署的时候,遇到一个问题,进行登录的时候,提交用户名和密码之后,浏览器自动跳转到带有nginx端口号的页面,然后提示无法连接。
通过抓包发现,tomcat返回请求的时候,在http的header里面添加了location来告诉浏览器跳转,当tomcat把包交给nginx之后,nginx在location前面加上了自己的端口号,造成了不能连接的情况。
后来发现,在nginx中有个参数:
port_in_redirect off;
这个参数就是告诉nginx,遇到302跳转的时候,不要加上自己的端口号。加上这个参数之后,问题解决。