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

Nginx Ingress Controller路径路由失效问题求助

解决Nginx Ingress路径路由失效问题

你的问题出在路径匹配优先级和重写规则配置上:

  1. 路径匹配顺序问题:Ingress的路径匹配是按配置顺序执行的,path: /的Prefix类型会匹配所有以/开头的请求(包括/grafana),导致后续的/grafana路径规则根本不会被触发。
  2. 全局重写规则问题:全局设置rewrite-target: /会把所有请求的路径都重写成根路径,即使匹配到/grafana,转发给grafana服务的请求也是/,但如果grafana服务没有正确处理这种路径映射,也会引发问题(不过你的核心问题还是优先级)。

修改后的Ingress配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: frontent-ingress
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    # 通过捕获组实现精准路径重写
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  ingressClassName: nginx
  rules:
    - host: mycustom-domain.com
      http:
        paths:
          # 先匹配/grafana相关路径,用正则捕获后续内容
          - path: /grafana(/|$)(.*)
            pathType: ImplementationSpecific
            backend:
              service:
                name: grafana
                port:
                  number: 3000
          # 再匹配所有其他路径,转发给前端服务
          - path: /(.*)
            pathType: ImplementationSpecific
            backend:
              service:
                name: frontent-orion-service
                port:
                  number: 4200

关键调整说明

  • 路径顺序:把/grafana相关的规则放在最前面,确保这类请求优先被匹配,不会被后面的通用规则拦截。
  • 正则路径与重写:/grafana(/|$)(.*)会匹配/grafana、/grafana/以及/grafana/xxx这类路径,配合rewrite-target: /$2,会把/grafana/xxx重写成/xxx转发给grafana服务,符合grafana默认监听根路径的要求。
  • pathType设置:使用ImplementationSpecific类型来支持Nginx的正则匹配逻辑,替代原来的Prefix,确保正则规则生效。

验证方式

应用修改后的Ingress配置:

kubectl apply -f your-ingress-file.yaml

等待Ingress控制器更新规则后,访问mycustom-domain.com/grafana即可正常路由到grafana服务,根路径仍指向前端服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:52:55