测试环境没有F5 ,直接配置的是Nginx的地址,且Nginx监听的默认端口80 。 但生产环境F5后面配置了4个Nginx , F5端口开放了 8585端口 ,用于将Http请求转发到Nginx上 .
问题描述:
使用了测试环境的Nginx的配置文件,结果通过F5的ip+port(8585)访问应用时,好多ajax请求错误
原因分析:
经排查端口都转发到了80上,可以推断是F5到Nginx这一层 是没有问题的,直接通过Nginx访问应用,好多应用也是跳转到了80上,因此怀疑是Nginx的配置不正确导致的。
解决方案:
如果使用的不是Nginx默认的80端口,比如我这里的8585 ,转发请求时有可能会丢失端口号,这里只要在$host
后面加上:$server_port;
即可
在HTTP请求的server节点中
将
proxy_set_header Host $host
调整为
proxy_set_header Host $host:$server_port;
reload 或者重启 nginx ,问题解决。