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

2/6/2020

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

-- akuscu
cloudflare
http
kubernetes-ingress
nginx-ingress
proxy

1 Answer

2/6/2020

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 
-- akuscu
Source: StackOverflow