Docker 如何使用NGINX入口控制器从Cloudflare恢复原始客户端IP

Docker 如何使用NGINX入口控制器从Cloudflare恢复原始客户端IP,docker,nginx,kubernetes,google-kubernetes-engine,cloudflare,Docker,Nginx,Kubernetes,Google Kubernetes Engine,Cloudflare,我使用Cloudflare作为CDN,它隐藏了客户端的真实IP地址 我使用NGINX入口控制器作为运行在googlekubernetes引擎中的负载平衡器 因此,我尝试恢复原始IP地址,并尝试遵循此链接 既然我需要同一个密钥“set real ip from”的多个值,我如何在我的Nginx入口的configmap中实现这一点 为了从X-Forwarded-For报头检索数据并为客户端获取真实的IP地址,您必须在特定的Nginx入口控制器中启用代理协议,然后为访问者添加IP/网络 apiVers

我使用Cloudflare作为CDN,它隐藏了客户端的真实IP地址 我使用NGINX入口控制器作为运行在googlekubernetes引擎中的负载平衡器 因此,我尝试恢复原始IP地址,并尝试遵循此链接 既然我需要同一个密钥“set real ip from”的多个值,我如何在我的Nginx入口的configmap中实现这一点


为了从
X-Forwarded-For
报头检索数据并为客户端获取真实的IP地址,您必须在特定的Nginx入口控制器中启用代理协议,然后为访问者添加IP/网络

apiVersion: v1
data:
  proxy-real-ip-cidr: 103.21.244.0/22,103.22.200.0/22,103.31.4.0/22
  use-proxy-protocol: "true"
kind: ConfigMap
metadata:
  labels:
    app: nginx-ingress
  name: nginx-ingress-controller
  namespace: default

希望这对你有帮助

我也遇到了这个问题,我花了很长时间才解决,但显然我所需要的只是这个配置:

apiVersion: v1
data:
  # Cloudflare IP ranges which you can find online
  proxy-real-ip-cidr: "173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/12,172.64.0.0/13,131.0.72.0/22,2400:cb00::/32,2606:4700::/32,2803:f800::/32,2405:b500::/32,2405:8100::/32,2a06:98c0::/29,2c0f:f248::/32"
  # This is the important part
  use-forwarded-headers: "true"
  # Still works without this line because it defaults to X-Forwarded-For, but I use it anyways
  forwarded-for-header: "CF-Connecting-IP"
kind: ConfigMap
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

国际海事组织(IMO)的文件中确实不清楚这一点。我必须搜索大量的问题和实际的模板文件本身才能找到答案。

我尝试了您的解决方案,但出现了以下错误“[error]278#278:*183435断头:”�����X�~���J�$bBN/qBS�X�E/��<代码>B�*��� ���通用电气�K�b1���,(��@��{�����H��+�/����/�,�(�5.� ����“在阅读代理协议时,客户端:162.158.75.71,服务器:0.0.0.0:443”您可以共享
Ingress
对象配置吗?我编辑了上述问题的描述。此外,我正在使用以下图像显示nginx Ingress控制器“quay.io/kubernetes Ingress controller/nginx Ingress controller:0.24.1”您是否尝试禁用代理协议:
使用代理协议:“false”
?行为是什么?是的,我尝试了……正常行为……但我仍然获得Cloudflare IP
apiVersion: v1
data:
  # Cloudflare IP ranges which you can find online
  proxy-real-ip-cidr: "173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/12,172.64.0.0/13,131.0.72.0/22,2400:cb00::/32,2606:4700::/32,2803:f800::/32,2405:b500::/32,2405:8100::/32,2a06:98c0::/29,2c0f:f248::/32"
  # This is the important part
  use-forwarded-headers: "true"
  # Still works without this line because it defaults to X-Forwarded-For, but I use it anyways
  forwarded-for-header: "CF-Connecting-IP"
kind: ConfigMap
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx