Nginx入口控制器前转源IP [英] nginx ingress controller forward source ip
本文介绍了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屋!
查看全文