问题
https ===> nginx(443) ===> tomcat(8080)
默认tomcat是不知道用户是通过https的访问访问的443端口的,如何让tomcat知道呢?
1. nginx上添加http header
1 |
proxy_set_header X-Forwarded-Proto https; |
2. tomcat 上参考上述设置的http header
1 2 3 |
<Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="x-forwarded-proto" /> |
注意: protocolHeader默认是空的,必须指定哦,因为https默认端口为443,所以connector的proxyPort可以不设置
3. 如果nginx看到的domain和tomcat看到的domain不同,那么,tomcat 重定向时根据自己看到的domain来重定向就会不符合预期了,这时候,需要通过connector的proxyName来实现
参考资料: