Oracle云Kubernetes环境Nginx Ingress无法获取客户端真实IP咨询
排查与解决步骤
- 第一步:给Ingress Controller的Service添加OCI专属annotation
你当前使用的是OCI托管Kubernetes集群,默认创建的负载均衡实例不会自动透传客户端源IP,需要在ingress-nginx-controllerService的metadata.annotations下新增以下配置:
service.beta.kubernetes.io/oci-load-balancer-pass-through: "true" service.beta.kubernetes.io/oci-load-balancer-proxy-protocol: "1"
更新配置后等待云厂商负载均衡实例同步完成。
- 第二步:同步更新Ingress Nginx的ConfigMap配置
如果开启了负载均衡的Proxy Protocol,需要在同命名空间下的ingress-nginx-controllerConfigMap中添加配置,启用Proxy Protocol支持和转发头识别:
data: use-proxy-protocol: "true" compute-full-forwarded-for: "true" forwarded-for-header: "X-Forwarded-For"
- 第三步:验证配置生效
执行命令kubectl get svc ingress-nginx-controller -n ingress-nginx -o jsonpath='{.spec.externalTrafficPolicy}',确认返回值为Local,避免配置未同步。
如果你的域名前还部署了CDN、WAF等七层代理服务,需要额外在ConfigMap中添加trusted-proxies配置,填入代理服务的IP段:
data: trusted-proxies: "10.0.20.0/24,其他代理IP段"
配置全部更新完成后等待1分钟,重新访问服务再查看Ingress Pod日志,即可看到真实客户端公网IP。
内容的提问来源于stack exchange,提问作者purple_lolakos
相关产品推荐
相关产品推荐

