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

NGINX Ingress多路径路由同域名后端服务时出现404错误

问题排查与解决方案

针对同域名下多路径路由到不同后端服务出现404的问题,整理以下排查点和可行方案:

1. 修正Ingress正则匹配与重写配置

NGINX Ingress的正则匹配必须通过注解开启,且路径规则、重写目标要严格对应。以下是可直接复用的正确配置示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: multi-service-ingress
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  ingressClassName: nginx
  rules:
  - host: test.something.io
    http:
      paths:
      - path: /identity(/|$)(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: identity-api
            port:
              number: 80
      - path: /pets(/|$)(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: pets-api
            port:
              number: 80

关键细节:

  • 必须添加use-regex: "true",否则Ingress会将路径视为精确匹配,正则规则直接失效
  • pathType设为ImplementationSpecific,适配NGINX的正则匹配逻辑
  • 正则/identity(/|$)(.*)会覆盖/identity、/identity/、/identity/xxx等所有相关路径,重写后传递给后端的是/$2(即去除前缀后的剩余路径)

2. 调整路径匹配顺序

NGINX Ingress的路径匹配是从上到下优先匹配,如果宽泛路径(比如/(.*))排在具体路径前面,会直接覆盖后续规则。例如错误配置:

paths:
- path: /(.*)  # 该规则会匹配所有请求,导致后续/pets路径永远不会生效
  backend:
    service:
      name: identity-api
      port: 80
- path: /pets(/|$)(.*)
  backend:
    service:
      name: pets-api
      port: 80

正确做法是将/identity、/pets这类具体路径放在最前面,根路径(如果需要)放在最后。

3. 验证重写规则与后端路径期望匹配

部分后端服务要求接收的路径不带前缀,比如请求test.something.io/pets/list需转发为后端的/list,此时rewrite-target: /$2是正确的。如果后端期望保留前缀,则需调整为rewrite-target: /pets/$2,具体根据后端服务的路由规则调整。

4. 检查Ingress Controller的实际生成配置

可以直接查看Ingress Controller生成的NGINX配置,确认路由规则是否正确生效:

# 替换为你的Ingress Controller Pod名称和命名空间
kubectl exec -it <nginx-ingress-controller-pod> -n <namespace> -- cat /etc/nginx/nginx.conf | grep -A 15 -B 5 "test.something.io"

查看对应的location块是否正确匹配路径,并转发到对应的后端Service。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:03:32