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

K8s Ingress路径规则配置求助:路径分流至不同Service异常

Kubernetes Ingress路径规则配置修正方案

你当前的配置试图用复杂正则匹配路径,但Kubernetes原生Ingress的Prefix匹配不支持这类正则语法,不同Ingress控制器的正则支持逻辑也不一样,导致规则无法正常生效。下面提供两种可行的修正方案:

方案一:精确匹配+前缀匹配(简洁可靠)

利用Ingress路径从上到下的匹配优先级,先配置更具体的路径规则,再覆盖通用前缀:

spec:
  rules:
  - http:
      paths:
      # 优先匹配/rest-api/topology精确路径
      - backend:
          service:
            name: writer-svc
            port:
              number: 8443
        path: /rest-api/topology
        pathType: Exact
      # 匹配/rest-api/topology/下的所有子路径
      - backend:
          service:
            name: writer-svc
            port:
              number: 8443
        path: /rest-api/topology/
        pathType: Prefix
      # 匹配所有/rest-api前缀的其他请求
      - backend:
          service:
            name: normal-svc
            port:
              number: 8443
        path: /rest-api/
        pathType: Prefix

方案二:NGINX Ingress正则匹配(需开启注解)

如果你的集群使用NGINX Ingress Controller,可以通过注解开启正则支持,用正则规则精准划分路径:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: your-ingress-name
  annotations:
    # 开启正则匹配支持
    nginx.ingress.kubernetes.io/use-regex: "true"
    # 可选:转发时保留原路径结构,不需要可删除
    nginx.ingress.kubernetes.io/rewrite-target: /$0
spec:
  rules:
  - http:
      paths:
      # 匹配/rest-api/topology及所有子路径
      - backend:
          service:
            name: writer-svc
            port:
              number: 8443
        path: /rest-api/topology(/.*)?
        pathType: ImplementationSpecific
      # 匹配/rest-api开头但不属于topology分支的路径
      - backend:
          service:
            name: normal-svc
            port:
              number: 8443
        path: /rest-api(?!/topology)(/.*)?
        pathType: ImplementationSpecific

注:ImplementationSpecific表示将路径匹配逻辑交给Ingress控制器处理,这里就是NGINX来解析正则规则。

内容的提问来源于stack exchange,提问作者Alin-Bogdan Zirbo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:25:53