Search code examples
httpproxycloudflarekubernetes-ingressnginx-ingress

How Can I Restrict Acces By X-Forwarded-For Header on Nginx Ingress?


I have a kubernetes cluster and nginx ingress.Requests are coming from cloudflare to this ingress.Can i restrict access to ingress by x-forwarded-for header ? For example my ip is 1.1.1.1 and cloudlare 2.2.2.2 .When i make request over cloudflare , cloudflare set x-forwarded-for header to : 1.1.1.1 . I want to restrict access to my ingress if x-forwarded-for header rather than 1.1.1.1


Solution

  • I added this annotation to ingress and it is working now!

    nginx.ingress.kubernetes.io/server-snippet

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: services-ingress
      annotations:
        nginx.ingress.kubernetes.io/server-snippet: |
                   if ($http_x_forwarded_for != "<my-ip-address>") {
                   return 301 https://<redirect-address>;
                        }
    spec:
      rules:
      - host: <my-host>
        http:
          paths:
          - path: /<my-path>
            backend:
              serviceName: <my-service>
              servicePort: 80