❓1、问题描述
现象版本
SpringCloud 2021.0.5
Nacos 2.2.0
renren-fast
框架使用gateway
网关路由问题:
gateway
网关路由前端发送获取验证码的请求后renren-fast
的api
失效
前端发送的: http://localhost:88/api/captcha.jpg 通过网关路由->http://localhost:8080/api/captcha.jpg
但是正确地址应该是: http://localhost:8080/renren-fast/captcha.jpg。少了前缀/renren-fast
且api
应该去掉。
所以使用gateway
网关路径重写RewritePath
filter
实现路由路径正确。
RewritePath=/api/(?<segment>.*),/renren-fast/$\{segment}
实际情况是前端发送请求到网关, 网关路由转发后报如下错误:
503错误: Unable to find instance for renren-fast
📚2. 问题分析
首先我们的路由配置如下:
gateway:
routes:
- id: admin_route
uri: lb://renren-fast
predicates:
- Path=/api/**
filters:
- RewritePath=/api/(?<segment>.*),/renren-fast/$\{segment}
这里使用lb
负载均衡路由到renren-fast
服务所在地址,配置没有问题,路径也是对的,但是却报了503
。
为什么会这样,是因为在Spring Cloud 2020
版本以后,默认移除了对Netflix
的依赖,其中就包括Ribbon,官方默认推荐使用Spring Cloud Loadbalancer
正式替换Ribbon
,并成为了Spring Cloud
负载均衡器的唯一实现。
🚀3. 解决
在当前模块导入Spring Cloud Loadbalancer
依赖就可以了。文章来源:https://www.toymoban.com/news/detail-798637.html
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
文章来源地址https://www.toymoban.com/news/detail-798637.html
到了这里,关于【已解决】Gateway路由转发-报503 Service Unavailable的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!