关于Spring Cloud gateway的几项配置说明
通过自动发现配置路由
该功能不需要在配置文件中配置路由信息,Spring Cloud gateway会自动的从注册中心拉取注册到注册中心的服务信息,并将服务名做为路由断言来进行路由,这里Spring Cloud gateway会自动加一个过虑器重写路由后的路径并将前缀去掉,所以在请求时需要添加/服务名
的前缀,这一配置由以下几个配置控制。
spring:
gateway:
discovery:
locator:
route-id-prefix: '路由名前缀默认为discovery的类名'
#是否将服务名转换成小写
lower-case-service-id: false
#是否开启服务发现路由,如果已经在配置文件中配置了就不要开启此功能
enabled: false
RouteDefinitionLocator 接口
RouteDefinitionLocator定义了获取路由配置的规范,这里的自动发现路由是由DiscoveryClientRouteDefinitionLocator (实现了以上接口)完成的,它会持有一个服务发现实例,并从注册中心摘取服务名并生成对应的路由信息。
**注:**如果想从其它途径获取路由定义可以编写对应的路由获取实现。
Spring Cloud gateway 路由配置
路由配置的几种方式
spring:
cloud:
gateway:
# id不能重复
routes:
- id: portal
#直接配置地址
uri: http://localhost:8191/portal
predicates:
- Path=/portal/**
- id: bussiz
#通过服务名配置 需要gateway也注册到注册中心
uri: lb://bussiz
predicates:
- Path=/bussiz/**
filters:
- AddRequestHeader=Key, Value
- AddRequestParameter=paramName, paramValue
#重写URL这个用的比较多 把/api 去掉
- RewritePath=/api/(?<segment>.*), /$\{segment}
#请求匹配可以通过请求路径、时间,请求头等,上面主要是通过请求路径
- Path=/portal/**
- Header=X-Request-Id, \d+
- Host=**.somehost.org,**.anotherhost.org
- Before=2017-01-20T17:42:47.789-07:00[Asia/Shanghai]
- After=2017-01-20T17:42:47.789-07:00[Asia/Shanghai]
- Between=2017-01-20T17:42:47.789-07:00[Asia/Shanghai], 2017-01-21T17:42:47.789-07:00[Asia/Shanghai]
## 通过cookie进行转发 第一个参数为cookie名称,第二个是正规表达式
- Cookie=name, ch.p
- Method=GET,POST
- Query=red, gree.
- RemoteAddr=192.168.1.1/24