2017-03-01 459 views
0

我有Tomcat的8配置背后IIS 8.还我启用CDN服务。的Tomcat RemoteIpValve配置与CDN

主机,使RemoteIpValve为

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

日志显示为

org.apache.catalina.valves.RemoteIpValve.invoke Incoming request /api/service/dealer/getStates with originalRemoteAddr '127.0.0.1', originalRemoteHost='127.0.0.1', originalSecure='false', originalScheme='http' will be seen as newRemoteAddr='121.244.190.83', newRemoteHost='121.244.190.83', newScheme='http', newSecure='false' 

访问日志配置

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
       prefix="web.hyundai.co.in_access_log" suffix=".txt" 
       pattern="x-forwarded-for : %{x-forwarded-for}i %h %t &quot;%r&quot; %s %b"/> 

而且在访问日志

x-forwarded-for : 121.243.37.18, 121.244.190.83 127.0.0.1 [01/Mar/2017:09:02:52 +0530] "GET /api/service/dealer/getStates HTTP/1.1" 200 436 

现在Tomcat没有拿起实际的客户机IP 121.243.37.18,而不是它选择CDN服务器IP。我无法将CDN服务器IP作为代理添加,因为CDN边缘服务器将会很多。如何配置Tomcat来得到正确的远程IP地址

回答

0

是否CDN提供“X-实时IP”头? 的X转发,对于可能是IP地址,其中通过多个代理。

+0

的x转发是给逗号分隔IP包括实际的客户端IP和IP CDN。但出于某种原因Tomcat的RemoteIPValve使用的最后一个值(CDN IP),而不是实际的客户端IP。所以我要求提供的CDN添加客户头文件true-client-ip并传递实际的远程客户端IP并且工作。 – Mukun