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

Azure AKS中Ingress多域名配置遇404及指向错误问题求助

问题原因与解决方案

一、同一Ingress配置返回404的核心原因:YAML结构错误

你编写的多域名Ingress配置中,rules字段的YAML结构完全不符合Kubernetes规范。Ingress的rules是规则对象列表,每个规则需要将host和对应的http路由配置放在同一个列表条目下,而你把host和http拆成了独立的列表项,导致Ingress Controller无法识别有效的域名-服务绑定关系,最终返回404。

错误结构示例(你的写法):

rules:
  - host: zoo.example.com
  - http:  # 这是一个无绑定host的独立规则
      paths:
        - path: /
          ...
  - host: circus.example.com
  - http:  # 同样是无绑定host的独立规则
      paths:
        - path: /
          ...

修正后的同一Ingress配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-service-2
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt
spec:
  ingressClassName: nginx
  tls:
    - hosts:
        - zoo.example.com
        - circus.example.com
      secretName: tls-secret
  rules:
    # 第一个完整规则:绑定zoo.example.com到zoo-ui服务
    - host: zoo.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: zoo-ui
                port:
                  number: 80
    # 第二个完整规则:绑定circus.example.com到circus-ui服务
    - host: circus.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: circus-ui
                port:
                  number: 80

核心修正点:每个规则是单独的-条目,host和http属于同一条目下的缩进属性,确保Ingress Controller能正确解析域名与服务的对应关系。

二、拆分Ingress后域名指向同一服务的可能原因

当你将两个域名拆分为独立Ingress资源时,出现域名指向同一服务的问题,大概率是以下情况:

  1. TLS Secret冲突:如果两个Ingress共用同一个secretName: tls-secret,而该证书仅包含单个域名信息,或cert-manager证书颁发异常,会导致Ingress路由匹配混乱。建议为每个Ingress配置独立的TLS Secret,或确保单个Secret包含两个域名的有效证书。
  2. Ingress规则配置错误:其中一个Ingress未正确指定host字段,或使用了通配符规则,导致所有请求被匹配到该Ingress对应的服务。检查每个Ingress的rules.host是否准确,避免遗漏或错误。
  3. Ingress Controller缓存未刷新:AKS上的Nginx Ingress Controller存在配置缓存延迟,修改Ingress后等待1-2分钟,或执行kubectl rollout restart deployment nginx-ingress-controller -n <你的Ingress命名空间>强制刷新配置。

额外验证步骤

  • 执行kubectl describe ingress <ingress-name>查看Ingress资源状态,确认Rules和TLS部分是否正确解析,是否存在错误提示。
  • 检查cert-manager证书状态:kubectl describe secret tls-secret,查看dnsNames字段是否包含两个目标域名。
  • 直接测试服务可用性:通过kubectl port-forward service/zoo-ui 8080:80访问服务,确认服务本身正常运行。

内容的提问来源于stack exchange,提问作者Jai Narayanan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:35:27