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

如何配置同服务多路径Nginx Ingress并解决接口404报错

问题根因
  • 路径规则配置错误:当前使用的path正则/(/|$)(.*)仅能匹配根路径/和//开头的异常路径,正常业务路径(如/graphql、/rest/v1/create这类/后直接跟业务字符的路径)完全无法命中规则,请求不会被转发到后端服务,直接返回404。
  • 路径类型不匹配:使用正则匹配规则时,pathType设置为Prefix,该类型不识别正则语法,会进一步导致匹配逻辑失效。
  • 不必要的重写规则干扰:如果后端接口没有统一前缀需要裁剪,开启rewrite重写会篡改正常转发路径,额外触发404。
正确配置方案

根据实际业务场景二选一即可,不要混用配置。

场景1:后端接口直接暴露在服务根路径(最常见)

即访问https://backend.exemple.com/graphql、https://backend.exemple.com/rest1、https://backend.exemple.com/rest2就能直接对应到后端的三个端点,不需要统一访问前缀,此时完全不需要正则和重写规则,配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: mcs-thirdparty-back-ingress
  namespace: namespace
  annotations:
    nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS"
spec:
  ingressClassName: nginx-internal
  rules:
  - host: backend.exemple.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: mcs-thirdparty-backend
            port:
              number: 8080

场景2:后端接口需要统一访问前缀

即要求所有后端接口通过/api前缀访问(比如访问https://backend.exemple.com/api/graphql实际转发到后端的/graphql路径),此时才需要开启正则重写,注意必须将pathType改为支持正则的ImplementationSpecific,正则规则要正确编写:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: mcs-thirdparty-back-ingress
  namespace: namespace
  annotations:
    nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  ingressClassName: nginx-internal
  rules:
  - host: backend.exemple.com
    http:
      paths:
      - path: /api(/|$)(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: mcs-thirdparty-backend
            port:
              number: 8080
验证注意事项
  • 配置更新后等待1~2分钟,待nginx-ingress完成规则重载后再测试,避免旧规则缓存导致的异常。
  • POST请求测试前先验证OPTIONS预检请求返回是否正常,排除CORS拦截导致的假404。
  • 若仍返回404,可直接查看nginx-ingress-controller的运行日志,日志中会打印请求实际转发到后端的路径,可快速确认重写规则是否符合预期。

内容的提问来源于stack exchange,提问作者Bilel-NEJI

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:45:25