key-rate-limit插件实现了基于特定键值的限流,键值来源可以是URL参数、HTTP请求头。本文介绍如何配置key-rate-limit插件。
插件类型
流量管控。
配置字段
名称 | 数据类型 | 填写要求 | 默认值 | 描述 |
limit_by_header | string | 选填。limit_by_header、limit_by_param中选填一项。 | - | 配置获取限流键值的来源HTTP请求头名称。 |
limit_by_param | string | 选填。limit_by_header、limit_by_param中选填一项。 | - | 配置获取限流键值的来源URL参数名称。 |
limit_keys | array of object | 必填。 | - | 配置匹配键值后的限流次数。 |
子项limit_keys
中每一项的配置字段说明。
名称 | 数据类型 | 填写要求 | 默认值 | 描述 |
key | string | 必填。 | - | 匹配的键值。 |
query_per_second | number | 选填。query_per_second、query_per_minute、query_per_hour或query_per_day中选填一项。 | - | 允许每秒请求次数。 |
query_per_minute | number | 选填。query_per_second、query_per_minute、query_per_hour或query_per_day中选填一项。 | - | 允许每分钟请求次数。 |
query_per_hour | number | 选填。query_per_second、query_per_minute、query_per_hour或query_per_day中选填一项。 | - | 允许每小时请求次数。 |
query_per_day | number | 选填。query_per_second、query_per_minute、query_per_hour或query_per_day中选填一项。 | - | 允许每天请求次数。 |
配置示例
识别请求头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
用于匹配请求的域名,当发现域名匹配时,将使用此段配置。配置的匹配生效顺序,将按照规则的排列顺序,匹配第一个规则后生效对应配置,后续规则将被忽略。