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

K8s Nginx Ingress URI重写配置异常求助

问题分析与解决方案

核心问题

你的404错误源于两个关键配置错误:

  1. 不必要且配置错误的重写规则:你添加了nginx.ingress.kubernetes.io/rewrite-target: /$1注解,但路径(path)未设置正则捕获组,导致$1为空值。当请求/bar或/sos时,NGINX会将路径重写为/转发给后端服务,而服务B、C的有效资源在/bar、/sos路径,根路径/无对应资源,因此返回404。
  2. 注解混用:你同时使用了两类不兼容的Ingress注解——官方kubernetes/ingress-nginx(你部署的helm chart对应的控制器)使用nginx.ingress.kubernetes.io/前缀,而nginx.org/属于NGINX Inc的Ingress Controller注解,混用可能导致部分配置失效。

修正后的配置

移除不必要的重写注解,统一使用官方注解,并调整路径顺序(确保最长路径优先匹配,避免歧义):

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/proxy-ssl-verify: "false"
    nginx.ingress.kubernetes.io/proxy-body-size: 1024m
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "350"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "4260"
  name: service-A-ingress
spec:
  ingressClassName: nginx
  rules:
  - host: test-api.foo.com
    http:
      paths:
      - backend:
          service:
            name: Service-B
            port:
              number: 3002
        path: /bar
        pathType: Prefix
      - backend:
          service:
            name: Service-C
            port:
              number: 3003
        path: /sos
        pathType: Prefix
      - backend:
          service:
            name: service-A
            port:
              number: 3001
        path: /
        pathType: Prefix

关键调整说明

  • 移除重写注解:你的需求是路径完全透传(请求路径与后端服务路径一致),无需重写,因此删除rewrite-target注解即可让NGINX原样转发请求路径。
  • 替换注解前缀:
    • nginx.org/client-max-body-size → nginx.ingress.kubernetes.io/proxy-body-size
    • nginx.org/proxy-connect-timeout → nginx.ingress.kubernetes.io/proxy-connect-timeout(值不需要带s后缀,仅保留数字)
    • nginx.org/proxy-read-timeout → nginx.ingress.kubernetes.io/proxy-read-timeout(同理去掉s后缀)
  • 调整路径顺序:将/bar、/sos这类更长的前缀路径放在/前面,确保NGINX优先匹配具体路径,避免所有请求都被根路径拦截(官方ingress-nginx支持最长前缀匹配,但显式调整顺序更稳妥)。
  • 修改pathType:使用Prefix类型替代ImplementationSpecific,更清晰地表明是前缀匹配规则,符合你的需求场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:10:28