Amazon web services AWS网络负载平衡器无法获取客户端IP

Amazon web services AWS网络负载平衡器无法获取客户端IP,amazon-web-services,amazon-ecs,amazon-elb,nlb,Amazon Web Services,Amazon Ecs,Amazon Elb,Nlb,对于在Fargate上运行的应用程序,我从切换到,因为我的应用程序需要静态IP地址 现在我无法从X-Forwarded-For或X-Real-IPHTTP头中获取源/客户端IP地址。在这两个报头中,我都获得了私有IP。在上的时候,我能够从X-Forwarded-For头获取客户端IP 表示NLB保留源IP地址 我还不能解决这个问题。我可能做错了什么 如果使用网络负载平衡器无法实现这一点,那么鉴于我的应用程序正在AWS ECS Fargate上运行,我如何实现以下目标: 拥有静态IP(例如,记录、

对于在Fargate上运行的应用程序,我从切换到,因为我的应用程序需要静态IP地址

现在我无法从
X-Forwarded-For
X-Real-IP
HTTP头中获取源/客户端IP地址。在这两个报头中,我都获得了私有IP。在上的时候,我能够从
X-Forwarded-For
头获取客户端IP

表示NLB保留源IP地址

我还不能解决这个问题。我可能做错了什么

如果使用网络负载平衡器无法实现这一点,那么鉴于我的应用程序正在AWS ECS Fargate上运行,我如何实现以下目标:

  • 拥有静态IP(例如,记录、IP白名单等)

  • 可以提取客户端IP地址(例如,对于使用GeoIP等的基于区域的业务逻辑)


  • 网络LB不会像应用程序LB那样支持X-Forwarded-For报头

    应用程序LB:

    第7层负载平衡 您可以对HTTP/HTTPS应用程序进行负载平衡,并使用特定于第7层的功能,例如X-Forwarded-For头

    网络LB不是这种情况,它是第4层负载平衡方法,因此不支持HTTP协议


    网络LB将维护源IP“保留源IP地址”,而应用LB不会。由于正在维护IP地址,因此网络LB方法不适用于X-Forwarded-for报头,该报头在使用NAT时插入原始IP

    根据@paul dawson的回答,如果您的后端支持代理协议标准,您可以通过在NLB和您的服务器上启用该标准,实际使用NLB获得源IP

    上的更多详细信息非常清楚地描述了为什么无法使用NLB从
    X-Forwarded-For
    头中提取客户端IP,更新了我的问题,希望找到解决我两个目标的方法。