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

Spring Cloud Gateway 2.5配合Eureka手动路由返回404如何修复

Spring Cloud Gateway 手动路由返回404问题修复方案

1. 基础依赖校验

  • 必须显式引入 spring-cloud-starter-loadbalancer 依赖,Spring Cloud 2020及以上版本已移除Ribbon组件,手动配置lb://前缀的路由时,必须依赖LoadBalancer组件才能解析服务名、实现负载均衡转发。
  • 确认已关闭服务自动发现特性,在配置文件中添加 spring.cloud.discovery.enabled=false,避免自动生成的路由和手动配置的路由规则冲突。

2. 路由规则配置校验

参考标准手动路由配置结构:

spring:
  cloud:
    gateway:
      routes:
        - id: custom-service-route # 路由唯一标识,不可重复
          uri: lb://YOUR-SERVICE-NAME # 服务名必须和Eureka注册中心显示的大小写完全一致
          predicates:
            - Path=/service-prefix/** # 路径匹配规则,/**不可省略,否则无法匹配子路径
          filters:
            # 如果需要去掉匹配的前缀再转发到后端,添加StripPrefix过滤器,数字对应要去掉的路径层数
            - StripPrefix=1
  • 注意lb://后的服务名必须和Eureka注册的服务名完全匹配,Eureka默认会将服务名转为大写存储,这里建议统一写大写服务名。
  • 路径断言配置必须完整:如果需要匹配/service-prefix下的所有子路径,末尾必须加/**,仅配置Path=/service-prefix只能匹配单个路径。
  • 过滤器规则校验:如果访问网关的路径前缀不需要传递到后端服务,必须配置StripPrefix过滤器。例如网关访问路径为http://网关地址/service-prefix/get/1,去掉第一层前缀后转发到后端的路径为/get/1,否则后端会收到完整的/service-prefix/get/1请求,若后端没有对应路径就会返回404。

3. 服务注册与负载均衡校验

  • 确认网关服务可以正常连接Eureka,成功拉取到后端服务的实例列表,可以通过网关的启动日志查看服务拉取记录,也可以引入actuator依赖后访问/actuator/gateway/routes端点查看已加载的路由规则是否符合预期。
  • 确认后端服务在Eureka中的状态为UP,负载均衡器不会选择状态异常的实例进行转发。

4. 常见避坑提示

  • 不要同时开启spring.cloud.gateway.discovery.locator.enabled=true,该配置会开启基于服务发现的自动路由,和手动路由规则会产生冲突。
  • 不要配置重复前缀的路由规则,优先级低的路由会被高优先级的规则覆盖,无法生效。
  • 若使用了PrefixPath等路径拼接过滤器,需要确认拼接后的路径是否是后端服务实际存在的路径,避免拼接出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:54:03