Estoy usando Cloudflare como CDN y está ocultando la dirección IP real para los clientes. Estoy usando un controlador de entrada NGINX como equilibrador de carga que se ejecuta en el motor Google Kubernetes. Así que estoy tratando de restaurar la dirección IP original y tratando de seguir este enlace. https://support.cloudflare.com/hc/en-us/articles/200170706-How-do-I-restore-original-visitor-IP-with-Nginx- ¿Cómo puedo implementar esto en el mapa de configuración para mi entrada de Nginx? ya que necesito un valor múltiple para la misma clave "set-real-ip-from"?
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingressname annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/proxy-body-size: "0" nginx.ingress.kubernetes.io/affinity: "cookie" nginx.ingress.kubernetes.io/session-cookie-name: "route" nginx.ingress.kubernetes.io/session-cookie-expires: "172800" nginx.ingress.kubernetes.io/session-cookie-max-age: "172800" spec: tls: - hosts: - example.com secretName: sslcertificate rules: - host: example.com http: paths: - backend: serviceName: service servicePort: 80 path: /También tuve este problema y me tomó una eternidad solucionarlo, pero aparentemente todo lo que necesitaba era esta configuración:
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-nginxEn mi opinión, todo esto no está claro en la documentación. Tuve que buscar entre toneladas de problemas y el archivo de plantilla real para resolverlo.
Para recuperar datos del encabezado X-Forwarded-For y obtener una dirección IP real para los clientes, debe habilitar el protocolo proxy, en particular, el controlador Nginx Ingress ConfigMap y luego agregar IP/redes para los visitantes.
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¡Espero que esto te ayudará!