nginx redirect ignore port 两层nginx跳转忽略了端口

问题:

两层nginx做代理,第一层:nginx:将9087->代理到80端口,第二层:将80端口->流量打到我们的代码上,结果在代码中拿到的链接不带9087端口,则代码中发生跳转的时候,会不带端口,导致跳转出错?

原因:

因为第一层将9087打到80端口上,第二层拿到的请求链接的80端口是nginx默认端口,被nginx忽略了,如果不发生跳转,没有问题,一般发生跳转,不论是相对还是绝对路径,都不会带9087端口号,这就导致跳转出错

解决:

既然已知是被nginx忽略了端口号,那改代码就无济于事,那就改nginx配置,让他过来的时候把端口号带上,一句简单的配置即可解决

proxy_set_header Host $http_host;