搭建Spring Cloud Gateway

spring boot版本:2.1.10.RELEASE
spring cloud版本:Greenwich.SR4

1.添加pom依赖

<!-- spring gateway依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<!-- eureka依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2.配置服务路由

网上大部分采用 yml 配置,这里采用 application.properties
spring cloud gateway官方文档
参考资料

# 暴露所有的gateway端点
management.endpoints.web.exposure.include=*
# 自动配置注册中心中路由 默认 false关闭
spring.cloud.gateway.discovery.locator.enabled=false
# 开启小写验证,默认feign根据服务名查找都是用的全大写
spring.cloud.gateway.discovery.locator.lowerCaseServiceId=true
# 设置路由id
spring.cloud.gateway.routes[0].id=jz-shop-product
# 设置路由uri uri以lb://开头(lb代表从注册中心获取服务),
# 后面接的就是你需要转发到的服务名称,这个服务名称必须跟eureka中的对应,否则会找不到服务
# 也可以是一个url
spring.cloud.gateway.routes[0].uri=lb://jz-shop-product
spring.cloud.gateway.routes[0].predicates[0]= Path=/shop-product/**
spring.cloud.gateway.routes[0].filters[0]= StripPrefix=1

spring.cloud.gateway.routes[1].id=jz-shop-cart
spring.cloud.gateway.routes[1].uri=lb://jz-shop-cart
spring.cloud.gateway.routes[1].predicates[0]= Path=/shop-cart/**
spring.cloud.gateway.routes[1].filters[0]= StripPrefix=1

注意:

  1. 这里配置了两个服务,如果用 predicates 配置了前缀,一定要用 StripPrefix 将前缀去掉,使url与服务中额url一致,否则会报404。
  2. 启动类无需额外添加除 @SpringBootApplication 之外的任何注解。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章