首页 » Tomcat » 正文

ngnix代理tomcat SSL协议的问题

背景:nginx反向代理到tomcat,nginx配置了SSL,tomcat使用http协议,nginx做了强制http重定向到https的配置。

问题:

1. 先来了一个https请求,代码中使用response.sendRedirect(“/path”),结果容器对path补齐后产生http://ip/path的url,协议是http的,然后,客户端请求http协议url,又被重定向到一个https协议。
2. 导致有一次http协议跳转。
3. 谷歌浏览器以后强制使用https协议,http协议会被禁止。

解决方案:

tomcat中配置代理端口和相关的协议,让tomcat容器知道是在代理,tomcat容器在处理response.sendRedirect(“/path”)的时候自动使用https协议。

1
2
3
    <Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443"  proxyPort="80" scheme="https"/>

参考:

http://tomcat.apache.org/tomcat-9.0-doc/proxy-howto.html
http://webapp.org.ua/sysadmin/setting-up-nginx-ssl-reverse-proxy-for-tomcat/