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配置的主要内容,如果未能解决你的问题,请参考以下文章
6.SpringCloud -- 注册中心与配置中心 Nacos网关 Gateway