一、缘由
nginx有时候并不像apache那样智能,对于redirect location的处理尤为惨淡,几乎只能用户手工处理非标准端口的问题。
比如,因为种种原因,nginx并不能监听在80端口,或者外部通过NAT方式将请求丢给nginx,外部地址并不是标准http(s)端口(非80和443端口),此时nginx并不能美好的处理这些重定向。发生重定向的时候会丢失端口。
例如:Nginx监听非80端口,访问欢迎页面时应该是重定向到登录页面,在这个重定向的过程中端口丢失了。
二、解决办法
一般是在将反向代理配置在location中,以匹配不同代理规则的需要。
经实践,以下办法都可以实现,三选一即可,优先选择1,再者选择2。
1、 proxy_set_header Host $host:$server_port; (跟版本有关系,我的失效)
2、 proxy_set_header Host $http_host;(跟版本有关系,我的失效)
3、 proxy_set_header Host $host:11011;(直接强制注入端口号,亲测有效)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lxwno.1@163.com