Nginx 配置Location
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 添加此行
后台获取正确协议
方法一
后台通过request.getHeader(“X-Forwarded-Proto”)获取真实的scheme
方法二
Tomcat 配置 server.xml ,Engine 模块下配置一个 Valve
<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https"/>
配置双方的 X-Forwarded-Proto 就是为了正确地识别实际用户发出的协议是 http 还是 https,这样就可以request.getScheme()获取正确的结果了,就像用户在直接访问 Tomcat 一样。
Be First to Comment