IT序号网

nginx之nginx入口 Controller 正向源ip

powertoolsteam 2025年05月04日 编程语言 70 0

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

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:
data: 
  use-forwarded-headers: "true" 

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

我在AKS群集上运行,nginx入口 Controller 位于Azure负载平衡器的后面。 Nginx入口 Controller svc作为类型的loadbalancer公开,并锁定在svc打开的节点端口上。

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

请您参考如下方法:

听起来您的Nginx Ingress Controller在NodePort(或LoadBalancer)服务之后,或者在kube-proxy之后。通常,要让 Controller 查看原始的连接IP,您需要使用hostNetwork端口进行部署,以便其直接侦听传入的流量。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!