我在Application Load Balancer Fargate上运行的应用程序从Network Load Balancer切换到ECS,因为我的应用程序需要静态IP地址。
现在,我无法从X-Forwarded-For
或X-Real-Ip
HTTP标头获取源/客户端IP地址。在这两个标头中,我都获得了私有IP。在Application Load Balancer上,我能够从X-Forwarded-For
标头中获取客户端IP。
Documentation here说NLB保留了源IP地址。
我尚无法解决此问题。我可能做错了什么?
如果使用Network Load Balancer无法做到这一点,那么鉴于我的应用程序正在AWS ECS-Fargate上运行,我该如何实现以下目标:
具有静态IP(例如用于A记录,IP白名单等)
可以提取客户端IP地址(例如,使用GeoIP等基于区域的业务逻辑)
答案 0 :(得分:2)
网络LB将不像应用程序LB那样支持X-Forwarded-For标头。
应用磅:
第7层负载平衡 您可以负载均衡HTTP / HTTPS应用程序并使用第7层特定的功能,例如X-Forwarded-For标头。
Network LB并非如此,它是第4层负载平衡方法,因此它不支持HTTP协议。
网络LB将保留源IP“保留源IP地址”,而应用程序LB将不保留。因为要维护IP地址,所以网络LB方法对于X-Forwarded-For标头不起作用,该标头在使用NAT时插入原始IP。
答案 1 :(得分:0)
扩展@paul-dawson 的回答,如果您的后端支持代理协议标准,您实际上可以使用 NLB 获取源 IP,通过在 NLB 和您的服务器上启用它。