我有几个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()
返回http
,request.isSecure()
返回false
。
我怎样才能让remoteIpValve工作?
谢谢。
发布于 2011-10-17 18:02:48
负载均衡器的远程IP是什么?
连接设备的IP地址(在本例中为负载均衡器)必须在internalProxies
配置中,否则将不应用到远程地址、方案、端口和请求安全性的转换。
默认情况下,允许本地主机和大多数RFC1918范围(172.16/12除外)。如果代理连接到tomcat服务器时的IP不在这些范围之一,则需要配置internalProxies
设置以允许负载均衡器。
https://serverfault.com/questions/322150
复制相似问题