SpringCloud Gateway报500 Invalid host: 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.5.RELEASE]
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
	|_ checkpoint ⇢ org.springframework.web.cors.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会不支持下划线的命名方式,可能是在底层代码会有一定的限制。此问题困扰了我半天,再此做以记录。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值