nginx作为反向代理,监听端口非80端口比如使用88端口,tomcat监听的端口8080,这种情况下当发生302重定向的时候,tomcat默认会重定向到80端口,根本原因就是tomcat的repose的头部带的location的端口默认是80端口,这样nginx就会重定向到80端口导致系统无法访问。如果nginx监听的是80端口自然不会存在这样的问题。 知道问题的根本原因是头部的location不对导致的,那么处理办法就很简单了,这里有两种办法: 1.治标不治本的办法,配置nginx,修改location达到解决问题
proxy_redirect http://host http://host:88;
2.从根本上解决问题,修改tomcat配置,配置代理的端口 在server.xml配置文件中http的connector节点加入了 proxyPort="88"就可以了。
Tomcat在设计的时候是对这种代理服务器和Tomcat集成的情况做了考虑,80端口之所以没问题是因为port为空,浏览器会默认走80端口,如果nginx这代理服务器不是80这个端口应该需要配置proxyPort的属性的,这样就不会遇到这个问题。版权声明:本文为xinyulou原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。