将客户端IP跨多个代理传递

我在Apache httpd服务器前有一个负载均衡器,而Apache服务器在运行Tomcat6的服务器前面。 我们使用Tomcat来运行Shibboleth的IdP。 以下是这样的:

Client -> Load Balancer -> Apache httpd server (mod_proxy_ajp) -> Tomcat server 

我正在考虑将客户端的IP传递给Tomcat服务器。 LB将variablesClientIP传递给httpd服务器,我可以在httpd的LogFormat中将其parsing为"%{ClientIP}i" ,但是这显然不会将其传递给Tomcat服务器,而是TomcatloggingLB的IP。

我已经尝试使用Tomcat的RemoteIpValve(在server.xml内部的<Engine> ):

 > <Valve className="org.apache.catalina.valves.RemoteIpValve" > remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" > protocolHeaderHttpsValue="https" /> 

希望mod_proxy的使用能够通过X-Forwarded-For的IP而没有成功。 我已经看过mod_rpaf上的mod_rpaf ,但是我希望没有额外的apache httpd mods就可以做到这一点。

我想我是把这一切联系在一起的几件事,但是陷入了一种</s> </s>。 有任何想法吗?

如果负载均衡器将客户端IP地址插入名为ClientIP的头中,则mod_proxy应将其传递给Tomcat服务器,而不进行任何特殊configuration。 尝试configurationTomcat RemoteIpValve以查找ClientIP而不是X-Forwarded-For 。 例如

 <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="ClientIP" protocolHeaderHttpsValue="https" />