基于Eureka微服务架构API Gateway返回404错误排查求助
问题原因分析与解决方案
核心问题1:路由断言Path与请求路径不匹配
你配置的API Gateway路由断言是Path=/test/main/**,但实际请求的路径是/main/test,两者完全不匹配,导致网关无法找到对应的路由规则,直接返回404。
核心问题2:可选的路径重写需求(若调整断言后仍有问题)
当网关匹配到路径后,默认会将完整的请求路径转发到目标服务。如果后续调整断言后出现路径冗余的情况,需要添加路径重写过滤器。
具体修复步骤
步骤1:修正路由断言配置
修改API Gateway的application.properties中的路由断言,使其匹配你的请求路径:
spring.cloud.gateway.routes[0].predicates[0]=Path=/main/**
步骤2:添加路径重写过滤器(可选)
如果希望网关转发时去掉前缀(比如只转发/test到服务端,而不是/main/test),可以添加RewritePath过滤器:
spring.cloud.gateway.routes[0].filters[0]=RewritePath=/main/(?<segment>.*), /$\{segment}
注:properties文件中需用
$\{segment}转义,避免被Spring解析为占位符;若使用yaml配置则直接写/${segment}即可。
步骤3:验证访问方式
- 自定义路由访问:
http://localhost:8082/main/test - 服务发现默认路由访问:
http://localhost:8082/eureka-client/main/test(因你开启了服务发现定位器且开启小写服务ID转换)
内容的提问来源于stack exchange,提问作者ProgramCOder
相关产品推荐
相关产品推荐

