0


【已解决】Gateway路由转发-报503 Service Unavailable

Gateway路由转发503


❓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

依赖就可以了。

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
        </dependency>

在这里插入图片描述



本文转载自: https://blog.csdn.net/mjh1667002013/article/details/128853826
版权归原作者 CoolTiger_程序员 所有, 如有侵权,请联系我们删除。

“【已解决】Gateway路由转发-报503 Service Unavailable”的评论:

还没有评论