RemoteIpValve 没有发挥作用

RemoteIpValve 没有发挥作用

我有几个 Tomcat 服务器,位于 NetScaler 负载均衡器后面,可以执行 SSL 卸载。我已在所有服务器上的 server.xml 中添加了以下行:

     <Valve className="org.apache.catalina.valves.RemoteIpValve"
            remoteIpHeader="x-forwarded-for" protocolHeader="x-forwarded-proto" />

这在除 2 台(相同)服务器之外的所有服务器上都有效。我正尝试让它在那两台服务器上运行。

我嗅探到了流量,它包含x-forwarded-proto标头,其值为https,正如它应该的那样。的返回结果request.getHeader("x-forwarded-proto")https。但是,request.getScheme()返回httprequest.isSecure()返回false

我怎样才能使 remoteIpValve 工作?

谢谢。

答案1

负载均衡器的远程 IP 是什么?

连接设备(在本例中为负载均衡器)的 IP 地址必须在配置中internalProxies,否则将不应用对远程地址、方案、端口和请求安全性的转换。

默认情况下,localhost 和大多数 RFC1918 范围都是允许的(172.16/12 除外)。如果连接到 tomcat 服务器时代理的 IP 不在这些范围内,则需要配置设置internalProxies以允许负载均衡器。

相关内容