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

Kubernetes Ingress路径映射配置求助:前后端路由分流异常

解决方案

核心问题是Ingress规则的匹配顺序和单页应用(SPA)的路由处理逻辑没配合好。下面是适配你需求的Ingress配置,同时解决前端路由404和后端接口被前端接管的问题:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app-ingress
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    # 处理SPA路由刷新404的核心配置
    nginx.ingress.kubernetes.io/configuration-snippet: |
      try_files $uri $uri/ /index.html;
spec:
  ingressClassName: nginx # 确保你的集群中存在名为nginx的IngressClass
  rules:
  - host: test.example.com
    http:
      paths:
      # 优先匹配/api开头的所有请求,转发至后端服务
      - path: /api/(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: backend-service # 替换为你的后端Service名称
            port:
              number: 80 # 替换为后端Service暴露的端口
      # 匹配所有非/api路径,转发至前端服务
      - path: /(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: frontend-service # 替换为你的前端Service名称
            port:
              number: 80 # 替换为前端Service暴露的端口

关键配置说明:

  • 规则顺序:Ingress按从上到下的顺序匹配路径,把/api/(.*)放在最前面,确保所有/api开头的请求优先转发到后端,不会被后续的前端规则覆盖。
  • 路径重写:rewrite-target: /$1会将/api/getData重写为/getData,匹配你的后端基础路径配置(后端实际处理的是去掉/api前缀后的接口路径)。
  • SPA路由兼容:configuration-snippet中的try_files指令,让Nginx在找不到对应静态文件时自动转发到index.html,解决前端路由(如/feature、/abc/xxx)刷新后404的问题。
  • 正则匹配:开启use-regex: "true"后,路径中的(.*)才能作为通配符生效,实现对多级路径的匹配。

验证步骤:

  1. 确认后端Service的名称、端口正确,且后端应用确实处理去掉/api前缀后的接口路径。
  2. 前端应用需设置为history路由模式(而非hash模式),否则SPA路由逻辑会失效。
  3. 执行kubectl apply -f ingress.yaml更新配置,再用kubectl describe ingress app-ingress检查规则是否正常生效。

内容的提问来源于stack exchange,提问作者Archana Acharya T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:42:17