AWS 网络负载均衡器无法获取客户端 IP

ele*_*oet 2 nlb amazon-web-services amazon-ecs amazon-elb

对于在ECS Fargate上运行的应用程序,我从应用程序负载均衡器切换到网络负载均衡器,因为我的应用程序需要静态 IP 地址。

现在,我无法从中获取源/客户端IP地址X-Forwarded-ForX-Real-IpHTTP标头。在这两个标头中,我都获得了私有 IP。在Application Load Balancer 上,我能够从X-Forwarded-For标头中获取客户端 IP 。

此处的文档说 NLB 保留源 IP 地址。

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

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

  1. 拥有静态 IP(例如 A 记录、IP 白名单等)

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

Alf*_*man 6

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

应用 LB:

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

Network LB 不是这种情况,它是第 4 层负载平衡方法,因此它不知道 HTTP 协议。

网络 LB 将维护源 IP“保留源 IP 地址”,而应用 LB 则不会。因为 IP 地址正在维护,所以网络 LB 方法不使用 X-Forwarded-For 标头,它在使用 NAT 时插入原始 IP。