【问题标题】:Tomcat RemoteIpValve configuration with CDN带 CDN 的 Tomcat RemoteIpValve 配置
【发布时间】:2017-07-20 06:07:16
【问题描述】:

我在 IIS 8 后面配置了 Tomcat 8。我还启用了 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地址

【问题讨论】:

    标签: java iis cdn tomcat8 x-forwarded-for


    【解决方案1】:

    CDN 是否提供“X-Real-IP”标头? x-forwarded-for 可能是通过多个代理的 IP。

    【讨论】:

    • x-forwarded 提供逗号分隔的 IP,包括实际客户端 IP 和 CDN IP。但由于某种原因,tomcat RemoteIPValve 使用的是最后一个值(CDN IP)而不是实际的客户端 IP。所以我要求我提供的 CDN 添加客户标头 true-client-ip 并传递实际的远程客户端 IP,这样就可以了。
    猜你喜欢
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2017-04-20
    相关资源
    最近更新 更多