【问题标题】:x-forwarded-for header not passed by AWS Application Load BalancerAWS Application Load Balancer 未传递 x-forwarded-for 标头
【发布时间】:2018-06-15 23:48:03
【问题描述】:

我的 tomcat 应用程序没有从 AWS 应用程序负载均衡器接收 X-Forwarded-For 标头。负载平衡器被配置为卸载 SSL 并通过 HTTP 与 tomcat 应用程序连接。我收到了其他标头,例如 x-forwarded-proto、x-forwarded-port、x-amzn-trace-id。我正在尝试查找客户端 IP 地址,但现在坚持使用它。我还检查了我收到的所有标头以找出客户端 IP 地址,但它不存在。谁能帮帮我?

【问题讨论】:

    标签: amazon-web-services tomcat amazon-ec2 elastic-load-balancer


    【解决方案1】:

    这可能与 tomcat 配置有关。检查您是否在 tomcat 中有以下配置来处理 X-Forwarded-ForX-Forwarded-proto 标头

    <filter>
        <filter-name>RemoteIpFilter</filter-name>
        <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
        <init-param>
          <param-name>protocolHeader</param-name>
          <param-value>x-forwarded-proto</param-value>
        </init-param>
      </filter>
    
      <filter-mapping>
        <filter-name>RemoteIpFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
      </filter-mapping>
    

    这是配置参考:https://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Basic_configuration_to_handle_'x-forwarded-for''x-forwarded-proto'

    您可以在$CATALINA_BASE/conf/web.xml 或应用程序的WEB-INF/web.xml 中找到配置文件

    Tomcat 提供了许多过滤器,可以配置为使用 与所有使用 $CATALINA_BASE/conf/web.xml 的 Web 应用程序一起使用,或者可能是 通过在 应用程序的 WEB-INF/web.xml。

    【讨论】:

    • 这是正确答案。 X-Forwarded-For是AWS负载均衡器传过来的,需要在Tomcat中配置后才能使用。
    • 感谢 Anuruddha 和 Tom 的快速回复。效果很好。
    • Anuruddha,一个天真的问题。为什么需要这个配置。没有此过滤器,tomcat 是否不会将x-forwarded-for 标头发送到应用程序代码?
    • Tomcat 过滤器与什么有什么关系?它会“吃掉”标题还是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 2017-02-13
    • 2017-01-14
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    相关资源
    最近更新 更多