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

Kubernetes Ingress配置出现通配符Host导致/api/events路径返回404问题排查求助

问题根源:Ingress规则结构语法错误

你遇到的404问题和kubectl describe里Host显示为*的情况,本质是Ingress YAML中rules部分的结构写错了。

看一下你原配置里的rules段:

rules:
- host: mywebsite.com
- http:
    paths:
    - path: /api/events
      ...

这里你把host和http拆成了两个独立的数组元素(两个-开头的条目),这会被Kubernetes解析成两个规则:

  1. 第一个规则只有host: mywebsite.com,但没有任何路径和后端配置,相当于无效规则;
  2. 第二个规则没有指定host,Kubernetes会默认将这类规则匹配所有主机(即*),同时绑定了/api/events路径。

这种情况下,当你访问mywebsite.com/api/events时,Ingress Controller的匹配逻辑会出现混乱:要么优先匹配那个无host的通配规则,但可能因为TLS配置和host不匹配导致路由异常;要么根本没匹配到正确的路径绑定,最终返回404。

修复方案

把http块嵌套在host: mywebsite.com的同一个规则条目下,确保路径规则属于指定的主机。修正后的完整Ingress配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  namespace: apps
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/custom-http-errors: '404'
spec:
  tls:
  - hosts:
    - mywebsite.com
    secretName: my-secret-tls
  rules:
  - host: mywebsite.com
    http:  # 这里调整为host条目下的子节点,不再是独立规则
      paths:
      - path: /api/events
        pathType: ImplementationSpecific
        backend:
          service:
            name: my-events-api-svc
            port:
              number: 80

应用修正后的配置:

kubectl apply -f your-ingress-file.yaml -n apps

之后再次执行kubectl describe ingress my-ingress -n apps,你会看到Rules部分的Host列显示为mywebsite.com,此时访问mywebsite.com/api/events应该就能正常路由到你的服务了。

另外你提到的default-http-backend找不到的错误,确实和当前问题无关——它只是Ingress的默认 fallback 后端,只要你的规则能正确匹配请求,就不会触发这个错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 23:42:45