Nginx入口控制器前转源IP [英] nginx ingress controller forward source ip

查看:21
本文介绍了Nginx入口控制器前转源IP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经为应用程序设置了入口,但想要将我的IP地址列入白名单。所以我创建了这个入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/whitelist-source-range: ${MY_IP}/32
  name: ${INGRESS_NAME}
spec:
  rules:
  - host: ${DNS_NAME}
    http:
      paths:
      - backend:
          serviceName: ${SVC_NAME}
          servicePort: ${SVC_PORT}
  tls:
  - hosts:
    - ${DNS_NAME}
    secretName: tls-secret

但当我尝试访问它时,我得到了一个403禁止,并且在nginx日志中我看到了一个客户端IP,但它来自一个集群节点,而不是我的主IP。

我还使用以下配置创建了一个配置映射:

data:
  use-forwarded-headers: "true"

在容器的nginx.conf中,我可以看到它已被正确传递/配置,但我仍然得到403禁止,仍然只有来自集群节点的客户端IP。

我在AKS集群上运行,nginx入口控制器位于Azure负载均衡器之后。Nginx入口控制器svc公开为负载均衡器类型,并锁定由该svc打开的节点端口。

我是否需要在Nginx内配置其他内容?

推荐答案

如果您已经使用Helm chart安装了values.yaml,您只需使用controller.service.externalTrafficPolicy: Local配置您的values.yaml文件,我相信这将应用于您的所有服务。否则,您可以使用service.spec.externalTrafficPolicy: Local配置特定服务,以实现对这些特定服务的相同效果。

这里有一些资源可以加深您的理解:

这篇关于Nginx入口控制器前转源IP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆