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

Kubernetes Ingress跨命名空间路径路由出现HTTP404问题求助

问题分析与修复方案

你的判断是对的,核心问题就是缺少路径重写配置,另外还有两处配置遗漏需要修正:

问题根源

当你访问myapp-region1.onazure.com/testing/openapi.json时,当前Ingress会把完整路径/testing/openapi.json直接转发给default-testing命名空间的后端服务。但后端服务的接口是基于根路径/设计的(比如它期望收到的请求是/openapi.json),找不到/testing/openapi.json这个路由,所以返回404。

具体修复步骤

1. 启用并修正路径重写注释

把注释掉的nginx.ingress.kubernetes.io/rewrite-target打开,设置为/$1,配合正则化的path规则提取/testing之后的路径部分。

2. 恢复pathType: Prefix

在Kubernetes Ingress v1版本中,pathType是必填字段,注释掉会导致Ingress配置不生效或行为异常。

修改后的完整Ingress配置

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: liveapi-ingress-object-testing
  namespace: default-testing
  annotations:
    kubernetes.io/ingress.class: public-nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  tls:
    - hosts:
        - myapp-region1.onazure.com
        - myapp-region2.onazure.com
      secretName: ingress-tls-csi-testing
  rules:
    - host: myapp-region1.onazure.com
      http:
        paths:
          - path: /testing(/|$)(.*)
            pathType: Prefix
            backend:
              service:
                name: liveapi-svc-testing
                port:
                  number: 8080
    - host: myapp-region2.onazure.com
      http:
        paths:
          - path: /testing(/|$)(.*)
            pathType: Prefix
            backend:
              service:
                name: liveapi-svc-testing
                port:
                  number: 8080

说明

  • 正则路径/testing(/|$)(.*)会匹配所有以/testing开头的请求(包括/testing本身和/testing/openapi.json这类子路径)
  • rewrite-target: /$1会把匹配到的$1部分(也就是/testing之后的内容)转发给后端服务,比如/testing/openapi.json会被重写为/openapi.json发给后端,这样就能匹配到服务的正确路由了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:20:17