当我尝试打印
x-forwarded-for
值时,我得到的是集群内节点的 IP 地址,而不是请求客户端的 IP 地址。
我相信我当前的设置看起来像这样:
外部LB -> 入口 -> nginx -> 容器
如果我直接访问nginx,我会得到正确的ip地址。我的入口配置为
nginx.ingress.kubernetes.io/use-forwarded-headers: "true"
有一个可用的解决方法,如本官方文档中所述,使用内部网络直通负载均衡器并将
externalTrafficPolicy
配置为local
,您可以解决此问题。但有时不建议使用externalTrafficPolicy: local
,因为这会导致负载平衡不太理想。
另请尝试以下提到的故障排除步骤,这对于解决此问题很有用:
检查您正在使用的负载均衡器类型,如本文档中所述,只有应用程序负载均衡器支持
x-forwarded-for
协议,其余负载均衡器支持不同的协议。
如果您使用应用程序负载均衡器,请检查您的所有 NGINX 配置是否正确。
尝试提供您的 NGINX 和 Kubernetes 清单或复制此问题的步骤,以便它将有助于提供详细的解决方案。