SpringCloud Gateway配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud Gateway配置相关的知识,希望对你有一定的参考价值。

参考技术A 客户端发送请求到gateway,由gateway handler mapping进行路由,发送到gateway web handler。这个handler处理请求相关的filter链。filter分“pre”和“post”两种处理逻辑。

配置predicates和filters有两种方式:简写和全参数展开。

公式:name=name,regexp,例如

如果yaml文件标准一样进行配置,通常会有name和args两个键,args是一个map的键值对组配置predicate或者filter。如下:

每种路由的判断依据都是根据Http请求的不同属性。

**

value为正则表达式

value为正则表达式

每个Host为Ant-style格式,以.号分割。

参数包括一个Spring PathMatcherpatterns和一个可选的matchOptionalTrailingSeparator分隔符

上面的规则可以匹配诸如/red/1/red/blue/blue/green等路径。
抽取URI中的模板变量(如segment),作为键值对存储在ServerWebExchange.getAttributes(),key为ServerWebExchangeUtils.URI_TEMPLATE_VARIABLES_ATTRIBUTE。这些值可以被GatewayFilter factories获取到。有个工具方法可以更简单地获取到这些值。如下

value为正则表达式

格式为CIDR-notation,例如192.168.0.1/16,192.168.0.1是ip,16是子网掩码。

配置两个参数:group和weight(数值)。

上面的配置会让 80%的请求发送到weighthigh.org, 20%的请求发送到weightlow.org。

增加请求头参数,可以使用URI变量

增加查询参数,可以使用URI变量

增加响应头中参数,可以使用URI变量

去掉重复的响应头参数

上面会去掉重复的Access-Control-Allow-Credentials,Access-Control-Allow-Origin参数值。
可以设置strategy值修改默认删除策略,默认为RETAIN_FIRST,即保留第一个。其他有RETAIN_LAST,RETAIN_UNIQUE。

轻量的断路由

可以替换头部的参数的名称,如将Blue:abc替换为X-Request-Red:abc

增加前缀,例如/hello将被发送到/mypath/hello

The RequestRateLimiter GatewayFilter Factory
通过实现RateLimiter接口配置限流规则,可通过keyResolver参数设置具体的限流的key。现在默认的是PrincipalNameKeyResolver,调用的是 ServerWebExchange 中的 Principal.getName()。
如果key解析后为空,请求会被拒绝,可以通过配置下面参数进行自定义策略
spring.cloud.gateway.filter.request-rate-limiter.deny-empty-key ( true or false ) spring.cloud.gateway.filter.request-rate-limiter.empty-key-status-code

redis限流,使用的是令牌桶算法。
redis-rate-limiter.replenishRate 每秒多少个请求,也是令牌入桶的频率。
redis-rate-limiter.burstCapacity 峰值请求。
redis-rate-limiter.requestedTokens 每个请求消耗的令牌数,默认1.
如果想保持稳定的请求频率,可以设置 replenishRate 和 burstCapacity 为相同值,如果有突发的大量请求,则需要设置 burstCapacity 比 replenishRate 大。
如果想设置每分钟1个请求,可以通过以下配置实现
replenishRate=1
requestedTokens=60
burstCapacity=60

也可以实现自己的 RateLimiter 和 KeyResolver

配置参数 status and url

删除指定的请求头参数

删除指定响应头参数

删除请求参数

重写路径

上面配置会把/red/blue变为/blue

/red/blue会变为/blue

替换请求头参数值

替换响应头参数值

设置状态码

上面两种配置都会设置为401

删除前缀

上面的配置将使/name/blue/red变为nameservice/red。

参考
https://cloud.spring.io/spring-cloud-gateway/reference/html/#the-path-route-predicate-factory

以上是关于SpringCloud Gateway配置的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud 学习笔记总结

SpringCloud Gateway跨域配置

SpringCloud Gateway配置

6.SpringCloud -- 注册中心与配置中心 Nacos网关 Gateway

SpringCloud系列之网关gateway-14.网关层的其他妙用 - 限流

springcloud~gateway网关