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

Kubernetes Ingress-nginx /api路由子路径访问404故障排查

故障原因

核心配置错误:带正则规则的路径使用了Prefix路径类型。
pathType: Prefix是K8s Ingress的原生前缀匹配模式,会按路径字面量分段匹配,不会解析你写的正则捕获组(/|$)(.*),直接导致rewrite-target配置中的$2变量无法获取到/api后的子路径内容,转发到后端服务的路径不符合预期,最终返回404。

修复步骤

将/api对应路由的pathType字段值从Prefix修改为ImplementationSpecific,该类型会把路径匹配逻辑交给Nginx Ingress控制器处理,配合已经开启的nginx.ingress.kubernetes.io/use-regex: "true"注解,正则规则和重写配置才能正常生效。
修正后的完整Ingress配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /api(/|$)(.*)
            pathType: ImplementationSpecific
            backend:
              service:
                name: server-srv
                port:
                  number: 3000
          - path: /
            pathType: Prefix
            backend:
              service:
                name: client-srv
                port:
                  number: 3000
效果说明

配置生效后转发逻辑如下:

  • 访问/api/时,正则第二个捕获组匹配空值,转发到后端服务的路径为/,和你之前正常访问的根路径行为一致
  • 访问/api/hello时,正则第二个捕获组匹配值为hello,转发到后端服务的路径为/hello,可正常响应子路径请求
排查补充

如果修改配置后仍返回404,优先排查两点:

  • 确认后端server-srv服务的3000端口确实存在对应子路径的路由,排除后端服务本身路由缺失的问题
  • 查看Nginx Ingress控制器的运行日志,确认实际转发到后端的请求路径是否符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 22:09:36