Tomcat忽略Apache反向代理后面的X-Forwarded-Proto

ux6nzvsh  于 12个月前  发布在  Apache
关注(0)|答案(2)|浏览(166)

我的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确实收到了带有httpsX-Forwarded-Proto头。但是,上面的阀肯定配置错误。

x3naxklr

x3naxklr1#

根据the RemoteIpValve docs,Tomcat始终检查req.getRemoteAddr()是否适合阀的internalProxiestrustedProxies
请确保此远程地址与您在阀中设置的地址相符。如果代理使用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" />

字符串

snz8szmq

snz8szmq2#

<Valve className="org.apache.catalina.valves.RemoteIpValve" 
               internalProxies="127\.0\.0\.1" 
               remoteIpHeader="x-forwarded-for" 
               proxiesHeader="x-forwarded-by" 
               protocolHeader="x-forwarded-proto" />

字符串

相关问题