一、问题描述
Java Web 项目一般来说,都是 Nginx 在前端做反向代理服务器,起反向代理、静态资源分离等作用。网站升级为 Https 时,一般都是在 Nginx 层配置就可以了,但是某些特殊情况下,还是会出现一些问题,比如这篇文章:
《反向代理使用https协议,后台tomcat使用http,redirect时使用错误协议的解决办法》
时间久了,我都忘记我遇到的什么问题了,有可能是和上面文章的博主一样的吧。
突然想起补上这篇博客的原因是因为在看 Spring Boot 的文档的时候,发现了类似的配置章节:《Enable HTTPS when running behind a proxy server》
二、解决方案
方法一:
在反向代理那里设置一个头 X-Forwarded-Proto,值设置成https。
方法二:
在 Tomcat 的 server.xml 里添加这段配置:
<Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="X-Forwarded-Proto" />