我的Tomcat服务器位于一个Apache反向代理的后面,虽然一切似乎都配置正确,但request.isSecure()
返回false
。
Apache配置
Apache与Tomcat运行在同一台机器上。
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
字符串
Tomcat valve(server.xml)
<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确实收到了带有https
的X-Forwarded-Proto
头。但是,上面的阀肯定配置错误。
2条答案
按热度按时间x3naxklr1#
根据the RemoteIpValve docs,Tomcat始终检查
req.getRemoteAddr()
是否适合阀的internalProxies
或trustedProxies
。请确保此远程地址与您在阀中设置的地址相符。如果代理使用IPv6地址(
0:0:0:0:0:0:0:1
),则127.0.0.1
将无法工作。相反,不要重写
internalProxies
,因为默认的正则表达式工作得很好,例如:字符串
snz8szmq2#
字符串