首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nginx入口控制器转发源ip

nginx入口控制器转发源ip
EN

Stack Overflow用户
提问于 2020-04-01 18:28:07
回答 2查看 9.2K关注 0票数 7

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

代码语言:javascript
复制
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。

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

代码语言:javascript
复制
data:
  use-forwarded-headers: "true"

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

我在AKS集群上运行,nginx入口控制器在Azure负载均衡器后面。nginx入口控制器svc被暴露为类型负载均衡器,并且锁定在由svc打开的节点端口上。

我需要在Nginx中配置其他东西吗?

EN

回答 2

Stack Overflow用户

发布于 2020-04-10 06:59:02

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

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

票数 6
EN

Stack Overflow用户

发布于 2020-04-01 18:51:58

听起来就像你在一个NodePort (或LoadBalancer)服务后面,或者更确切地说,在kube-proxy后面有你的Nginx入口控制器。通常,为了让您的控制器看到原始的连接IP,您需要使用hostNetwork端口来部署它,以便它直接侦听传入的流量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60968806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档