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

如何通过Ingress实现请求分流?test.abc.com路由配置异常排查

问题排查与解决:Ingress请求分流规则未生效

原因分析

  • Nginx Ingress Controller的路径匹配遵循从上到下的顺序优先级,只要匹配到第一条规则就会终止后续匹配
  • 你当前配置中,第一条路径/*是正则匹配,会捕获所有以/开头的请求(包括根路径/和/main.js),导致所有请求都被路由到abc-demo-frontend,第二条规则完全没机会触发
  • 虽然开启了正则匹配注解,但规则顺序错误直接导致预期的分流逻辑失效

修复方案

调整Ingress规则的顺序,把更具体的匹配规则放在最前面,通用兜底规则放在后面:

  1. 先配置针对/main.js的精确匹配规则
  2. 再配置根路径/的规则,处理所有未被前面规则覆盖的请求

修正后的Ingress配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-demo-frontend-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: 'false'
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - host: "test.abc.com"
      http:
        paths:
          # 优先匹配/main.js请求
          - path: /main.js
            pathType: ImplementationSpecific
            backend:
              service:
                name: abc-demo-frontend
                port:
                  number: 80
          # 兜底匹配所有其他请求(包括根路径)
          - path: /
            pathType: ImplementationSpecific
            backend:
              service:
                name: abc-demo-frontend-external
                port:
                  number: 80

验证方法

应用配置后,通过以下方式确认生效:

  • 查看Ingress规则状态:kubectl describe ingress test-demo-frontend-ingress
  • 实际请求测试:
    # 根路径请求,应路由到abc-demo-frontend-external
    curl test.abc.com
    # /main.js请求,应路由到abc-demo-frontend
    curl test.abc.com/main.js
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 14:15:42