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

ALB Ingress Controller路径路由仅/*生效 /app1等路径返回404问题求助

问题根因与解决方案

核心原因:ALB默认透传完整请求路径,后端服务无对应前缀路由

你当前配置的Ingress规则仅指定了ALB的路径匹配逻辑,默认ALB会将完整的请求路径直接透传给后端服务:

  • 访问https://my-domain-name/app1时,请求路径/app1会直接转发给app1-service
  • 若app1-service本身的路由部署在根路径/下,没有适配/app1前缀的路由,就会直接返回404错误
  • 你访问/app3正常是因为该路径刚好匹配/*规则,透传给app3-service后,app3-service本身存在/app3路径的路由

解决方案

方案1:配置路径重写规则(推荐)

在Ingress的annotations中添加重写注解,将/app1、/app2前缀从转发路径中移除,适配后端服务的根路径路由:

  1. 新增重写注解
annotations:
  # 新增以下注解,将匹配到的路径后缀重写到根路径
  alb.ingress.kubernetes.io/rewrite-target: /$2
  1. 修改路径匹配规则
spec:
  rules:
     - http:
        paths:
          - path: /app1(/|$)(.*)
            pathType: Prefix
            backend:
              service:
                name: app1-service
                port:
                  number: 30002
          - path: /app2(/|$)(.*)
            pathType: Prefix
            backend:
              service:
                name: app2-service
                port:
                  number: 3030
          - path: /
            pathType: Prefix
            backend:
              service:
                name: app3-service
                port:
                  number: 443

修改后,访问https://my-domain-name/app1/xxx会被转发到app1-service的/xxx路径,适配后端服务的路由规则。

方案2:修改后端服务路由前缀

如果不方便修改Ingress配置,可以直接调整app1、app2服务的路由,让其适配/app1、/app2前缀即可。

额外检查项

  • 检查你的Ingress YAML格式是否正确,原配置中- path: /*的缩进比前两条路径规则多了1个空格,属于语法错误,可能导致规则解析异常
  • 原配置中/*配pathType: Prefix不符合K8s Ingress规范,Prefix类型路径不需要带通配符,改为path: /+pathType: Prefix即可
  • 可以直接在集群内执行curl <app1-service集群IP>:30002/app1验证后端服务是否本身支持该前缀路径,排除服务本身的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:57:02