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

问题描述 投票:0回答:1

我的T​​omcat服务器位于Apache反向代理后面。尽管似乎所有配置都正确,但是request.isSecure()返回false

Apache配置

Apache与Tomcat在同一台计算机上运行。

ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"

Tomcat阀门(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确实收到带有X-Forwarded-Protohttps标头。但是,上面的阀一定有错误的配置。

apache tomcat proxy reverse
1个回答
0
投票

根据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" />
© www.soinside.com 2019 - 2024. All rights reserved.