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

Ingress默认后端不生效,未定义路径被误转发至main-svc求助

问题原因

你的Ingress规则里,根路径path: "/"使用了pathType: Prefix,而Prefix类型的匹配逻辑是只要请求路径以指定前缀开头就会匹配。所有未定义的路径(比如/blogs、/abcd)都以"/"开头,所以会被这条规则优先匹配,直接转发到main-svc,根本不会触发默认后端的逻辑。

另外,你配置的nginx.ingress.kubernetes.io/rewrite-target: /$1在根路径规则下没有实际作用,因为path: "/"没有捕获组,$1是空值,会重写为"/",但这不是核心问题。

修复方案

可以通过以下方式解决:

方案1:将根路径改为Exact匹配

把根路径的pathType改成Exact,这样只有请求路径严格等于"/"的时候才会匹配main-svc,其他未匹配的路径会触发默认后端转发到error-svc。同时建议把同一个host的规则合并到一个rules条目下,这是更规范的写法:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-demo
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  ingressClassName: nginx
  rules:
    - host: "demoapp.com"
      http:
        paths:
          - pathType: Exact
            path: "/"
            backend:
              service:
                name: main-svc
                port:
                  number: 80
          - path: "/photo"
            pathType: Prefix
            backend:
              service:
                name: photo-svc
                port:
                  number: 80
          - path: "/video"
            pathType: Prefix
            backend:
              service:
                name: video-svc
                port:
                  number: 80

验证步骤

修改Ingress规则后,执行以下命令更新配置:

kubectl apply -f your-ingress-file.yaml

等待Ingress Controller同步规则后,测试各路径:

  • 访问demoapp.com → 转发至main-svc
  • 访问demoapp.com/photo → 转发至photo-svc
  • 访问demoapp.com/blogs或其他未定义路径 → 转发至error-svc

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:22:33