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

Heroku部署Zuul+Eureka+微服务架构时Zuul路由请求返回404问题

问题解决步骤

1 优先修正Zuul前缀配置问题

你当前Zuul配置中设置了zuul.prefix: /api,意味着所有Zuul接管的路由都需要加上/api前缀才能匹配。你当前请求的路径是/images/user/create,没有带/api前缀,自然无法命中路由规则返回404。

  • 修正方案二选一:
    • 方案1:请求地址改为https://croquis-time-zuul.herokuapp.com/api/images/user/create
    • 方案2:删除zuul.prefix: /api配置,和本地路由规则保持一致

2 修正Eureka实例注册配置错误

你所有微服务的eureka.instance.hostName都错误填写为Eureka服务的域名,会导致Eureka返回给Zuul的服务实例地址全部指向Eureka服务,无法正确转发到对应业务服务。

  • 修正每个服务的配置:
    • image-service的eureka.instance.hostName改为自身域名:croquis-time-image.herokuapp.com
    • auth-service的eureka.instance.hostName改为自身对应的域名
    • Zuul服务的eureka.instance.hostName改为自身域名:croquis-time-zuul.herokuapp.com
  • 额外补充:Heroku会为每个应用随机分配运行端口,不要在配置中写死端口,将所有服务的server.port配置改为${PORT:默认端口},比如image-service改为server.port: ${PORT:8200},兼容本地和线上环境。

3 验证Zuul路由与服务列表的方法

引入Spring Boot Actuator组件即可直接查看Zuul的路由映射和注册的服务实例信息:

  1. 在Zuul服务的依赖配置中添加spring-boot-starter-actuator依赖
  2. 在Zuul的application.yml中添加配置:
management:
  endpoints:
    web:
      exposure:
        include: routes,health
  endpoint:
    routes:
      enabled: true
  1. 部署后访问Zuul服务的/actuator/routes路径,即可看到所有生效的路由规则、对应的服务ID、转发的目标实例地址,可直接确认路由配置是否生效、服务实例地址是否正确。

4 可选校验:确认路由stripPrefix规则

你当前image-service的路由没有配置stripPrefix参数,默认值为true,会自动将路径中匹配的/images前缀移除后转发,比如请求/api/images/user/create会转发到image-service的/user/create,和你的业务预期一致无需修改;如果后续需要保留前缀再配置stripPrefix: false即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:57:03