You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AKS中Nginx Ingress多子域名路由配置实现方案

问题修正方案

你现有配置存在三个核心问题导致路由不生效:

  • 所有Ingress规则未绑定域名host字段,无法区分不同域名的请求
  • 同一条HTTP规则下配置了3个完全相同的/(.*)路径,存在匹配冲突,同时原YAML存在缩进错误,会直接导致资源创建失败
  • 无特殊路径重写需求时,多余的正则匹配、路径重写注解可能引发转发异常,可按需移除

调整后的正确Ingress配置

核心逻辑是在spec.rules层级为每个域名单独创建独立的规则块,每个规则块下仅绑定对应域名需要转发的后端服务,从根本上避免路径冲突:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ing
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/proxy-body-size: 70m
    # 无特殊路径裁剪需求可删除下面两行正则、重写相关注解
    # nginx.ingress.kubernetes.io/use-regex: "true"
    # nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  # 根域名转发到myapp服务
  - host: myapp.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: myapp
            port:
              number: 6666
  # Partner1子域名转发到partner1-myapp服务
  - host: partner1.myapp.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: partner1-myapp
            port:
              number: 6669
  # Partner2子域名转发到partner2-myapp服务
  - host: partner2.myapp.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: partner2-myapp
            port:
              number: 6672

配置后校验项

  • 提前将myapp.com、partner1.myapp.com、partner2.myapp.com三个域名的DNS A记录,指向AKS集群中Nginx Ingress Controller对应的Load Balancer公网IP,否则外部请求无法路由到集群入口
  • 应用新配置前先删除旧的异常Ingress资源,再apply新配置,应用后可执行kubectl describe ingress my-ing查看规则是否正常加载,无报错事件即为配置生效
  • 原partner2-myapp Deployment中containerPort: 6672#行的注释前缺少空格,建议补上为containerPort: 6672 # the application listens to this port,避免潜在的YAML解析问题

内容的提问来源于stack exchange,提问作者Dillon Willis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 22:24:24