Spring Cloud Gateway 默认路由不起作用
Posted
技术标签:
【中文标题】Spring Cloud Gateway 默认路由不起作用【英文标题】:Spring cloud gateway default routing doesn't work 【发布时间】:2020-04-01 03:49:13 【问题描述】:我想通过在 eureka 中注册的服务 ID(应用程序名称)在我的 spring 云网关(无 zuul)中启用默认路由,但我总是收到 404 错误。
在我的聊天服务的 bootstrap.yml 我已经定义了应用名称
spring:
application:
name: chat-service
在应用程序属性中:
eureka:
instance:
preferIpAddress: true
client:
healthcheck:
enabled: true
serviceUrl:
defaultZone: http://$EUREKA_HOST:localhost:$EUREKA_PORT:8761/eureka/
当我转到 eureka 的仪表板时,我可以看到我的聊天服务和网关也已注册。
网关应用中Eureka的配置和聊天服务一样,但是我也有这个:
spring:
application:
name: gateway
cloud:
gateway:
discovery:
locator:
enabled: true
接下来我还尝试添加不能正常工作的显式路由,但如果我将发现定位器启用设置为true
,这应该不需要吧?
routes:
- id: chat-service-route
uri: lb://chat-service
predicates:
- Path=**
我创建了测试端点,我尝试直接在聊天服务和网关上调用。直接呼叫工作正常,因此问题将与路由有关。
@RestController
@RequestMapping
public class TestController
@GetMapping
public String test()
return "chat-service ready";
我做错了什么?我有点绝望。我正在使用 spring boot 2.2.2 和 Hoxton.RELEASE 云依赖版本
【问题讨论】:
你能解释一下“不起作用”是什么意思吗?你试过什么网址? @spencergibb 对不起,我应该写得更干净。当我从网关调用时,聊天服务中的休息端点总是出现 404 错误 你在网关上调用什么url? @spencergibb 网关在 8080 上运行,所以我调用 localhost:8080/chat-service 聊天服务是否响应/chat-service?否则需要重写路径 【参考方案1】:尝试删除显式路由并将以下属性添加到应用程序 yml。这对我有用。
spring:
cloud:
gateway:
discovery:
locator:
lower-case-service-id: true
【讨论】:
以上是关于Spring Cloud Gateway 默认路由不起作用的主要内容,如果未能解决你的问题,请参考以下文章
spring cloud gateway 某些路由中跳过全局过滤器