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

Spring Cloud Gateway Server MVC路由配置404问题求助

排查Spring Cloud Gateway Server MVC路由匹配但返回404的问题

1. 先确认路由路径转换规则是否正确

你的请求路径是/demo1/service1,目标服务接口是/demo1Service1,必须保证路由配置里的路径重写逻辑准确。注意Spring Cloud Gateway Server MVC(Servlet栈)的配置语法和WebFlux版Gateway有差异,举个正确的配置示例(application.yml):

spring:
  cloud:
    gateway:
      mvc:
        routes:
          - id: demo1_route
            uri: http://localhost:8090
            predicates:
              - Path=/demo1/service1
            filters:
              - RewritePath=/demo1/service1, /demo1Service1

重点注意:

  • uri直接写目标服务的完整地址就行,无Eureka完全可行,静态URI路由是官方支持的方式
  • RewritePath的规则是「原始路径正则」对应「替换后路径」,如果是精确匹配,要确保正则能命中你的请求路径

2. 检查依赖是否正确引入

确保你用的是Gateway MVC的依赖,而不是WebFlux版的Gateway。Maven依赖应该是:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway-mvc</artifactId>
</dependency>

如果pom.xml里同时存在spring-boot-starter-webflux,必须移除——Gateway MVC基于Servlet栈,和WebFlux不兼容,会导致路由逻辑异常。

3. 先验证目标服务本身是否正常

直接用浏览器或Postman请求http://localhost:8090/demo1Service1,确认这个接口能正常返回200。另外要注意请求方法匹配:如果目标接口是POST,前端按钮发起的请求也得是POST,否则会因方法不匹配返回404。

4. 开启详细日志看转发细节

在application.yml里加日志配置,看清楚路由匹配后的路径转换过程:

logging:
  level:
    org.springframework.cloud.gateway.mvc: DEBUG

通过日志可以确认实际转发到目标服务的路径是不是/demo1Service1,如果路径不对,就说明重写规则配置有误。

5. 排查目标服务的上下文路径

如果目标服务配置了server.servlet.context-path(比如/api),那转发的URI要带上这个上下文路径,比如http://localhost:8090/api/demo1Service1,可以把上下文路径加到uri里,或者调整重写规则。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 09:47:13