SpringCloudGateway报500Invalidhost:lb:xxx
今天SpringCloud整合Gateway,然后在nacos中看到⽹关对应服务和业务对应服务已经是注册成功的,但是去调⽤⼀直报以下错误。 java.lang.IllegalStateException: Invalid host: lb://sandbox_manager
at org.springframework.cloud.gateway.filter.RouteToRequestUrlFilter.filter(RouteToRequestUrlFilter.java:86) ~[spring-cloud-gateway-core-2.2.5.RELEASE.jar:2.2 Suppressed: publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
|_ checkpoint ⇢ org.s.reactive.CorsWebFilter [DefaultWebFilterChain]
|_ checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
|_ checkpoint ⇢ HTTP GET "/admin/manager//user/info?token=admin-token" [ExceptionHandlingWebHandler]
Stack trace:
nacos中服务对应的名称。
有机硅单体
我这边⾸先去掉gateway模块,通过前端去调⽤该接⼝发现没有任何问题,接⼝能够正常接收到请求并返回对应结果。然后⼤致可以确定问题在gateway上⾯。看上⾯这个错,⼤概就是说不到“sandbox_manager”,我的⽹关配置如下。
server:
port: 9002
spring:
application:
name: sandbox_gateway
cloud:
nacos:
discovery:
太阳能灯笼server-addr: 127.0.0.1:8848
gateway:
routes:泥浆固液分离
- id: sandbox_manager
uri: lb://sandbox_manager
predicates:
- Path=/*/manager/**
然后⾃⼰突发奇想,是不是命名有问题,然后将“sandbox_manager”改成了“sandbox-manager”,请求⽹关转发成功。
改过的配置如下,需要在对应业务模块将spring.application.name也改成中杠格式。
server:
防伪打印机>锁扣port: 9002
spring:
application:
name: sandbox-gateway
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
gateway:
routes:
- id: sandbox-manager
uri: lb://sandbox-manager
predicates:
- Path=/*/manager/**
总结
不知道为什么,gateway会不⽀持下划线的命名⽅式,可能是在底层代码会有⼀定的限制。此问题困扰了我半天,再此做以记录。碳氟化钾