RemoteIpValve 没有完成它的工作

boa*_*azg 6 ssl tomcat

我有几个 Tomcat 服务器,在 NetScaler 负载平衡器后面,它执行 SSL 卸载。我已将以下行添加到所有服务器的 server.xml 中:

     <Valve className="org.apache.catalina.valves.RemoteIpValve"
            remoteIpHeader="x-forwarded-for" protocolHeader="x-forwarded-proto" />
Run Code Online (Sandbox Code Playgroud)

这适用于除 2 个(相同)服务器之外的所有服务器。我正在努力让它在这两个上工作。

我已经嗅探了流量,它包含x-forwarded-proto标头,其值为https,应该是。的返回结果request.getHeader("x-forwarded-proto")https。然而,request.getScheme()返回httprequest.isSecure()返回false

我怎样才能让 remoteIpValve 工作?

谢谢。

Sha*_*den 7

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

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

默认情况下,允许使用 localhost 和大部分 RFC1918 范围(172.16/12 除外)。如果连接到 tomcat 服务器时代理的 IP 不在这些范围之一,则需要配置internalProxies设置以允许负载平衡器。