key-rate-limit插件实现了基于特定键值的限流,键值来源可以是URL参数、HTTP请求头。本文介绍如何配置key-rate-limit插件。
插件类型
流量管控。
配置字段
名称  | 数据类型  | 填写要求  | 默认值  | 描述  | 
limit_by_header  | string  | 选填。  | -  | 配置获取限流键值的来源HTTP请求头名称。  | 
limit_by_param  | string  | 选填。  | -  | 配置获取限流键值的来源URL参数名称。  | 
limit_keys  | array of object  | 必填。  | -  | 配置匹配键值后的限流次数  | 
子项limit_keys中每一项的配置字段说明。
名称  | 数据类型  | 填写要求  | 默认值  | 描述  | 
key  | string  | 必填。  | -  | 匹配的键值。  | 
query_per_second  | number  | 选填。  | -  | 允许每秒请求次数。  | 
query_per_minute  | number  | 选填。  | -  | 允许每分钟请求次数。  | 
query_per_hour  | number  | 选填。  | -  | 允许每小时请求次数。  | 
query_per_day  | number  | 选填。  | -  | 允许每天请求次数。  | 
配置示例
识别请求头x-ca-key,进行区别限流。
limit_by_header: x-ca-key limit_keys: - key: 102234 query_per_second: 10 - key: 308239 query_per_hour: 10识别请求参数apikey,进行区别限流。
limit_by_param: apikey limit_keys: - key: 9a342114-ba8a-11ec-b1bf-00163e1250b5 query_per_second: 10 - key: a6a6d7f2-ba8a-11ec-bec2-00163e1250b5 query_per_minute: 100对特定路由或域名开启。
在
route-a和route-b两个路由做如下插件配置:limit_by_header: x-ca-key limit_keys: - key: 102234 query_per_second: 10在
*.example.com和test.com两个域名做如下插件配置:limit_by_header: x-ca-key limit_keys: - key: 102234 query_per_second: 100说明此例中的
route-a和route-b即在创建网关路由时填写的路由名称,当匹配到这两个路由时,将使用此段配置。此例中的
*.example.com和test.com用于匹配请求的域名,当发现域名匹配时,将使用此段配置。配置的匹配生效顺序,将按照规则的排列顺序,匹配第一个规则后生效对应配置,后续规则将被忽略。