我的Tomcat服务器位于Apache反向代理后面。尽管似乎所有配置都正确,但是request.isSecure()
返回false
。
Apache与Tomcat在同一台计算机上运行。
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
<Valve className="org.apache.catalina.valves.RemoteIpValve"
internalProxies="127.0.0.1"
remoteIpHeader="x-forwarded-for"
proxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto" />
[进一步检查后,Tomcat确实收到带有X-Forwarded-Proto
的https
标头。但是,上面的阀一定有错误的配置。
根据the RemoteIpValve docs,Tomcat 总是检查 req.getRemoteAddr()
适合于阀门的internalProxies
或trustedProxies
。
请确保此远程地址适合您在阀门中设置的地址。如果代理使用IPv6地址(0:0:0:0:0:0:0:1
),则127.0.0.1
将不起作用。
相反,请勿覆盖internalProxies
,因为默认正则表达式效果很好,例如:
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="x-forwarded-for"
proxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto" />