Files
higress/plugins/wasm-cpp/extensions/key_rate_limit/README.md
2023-05-12 14:23:58 +08:00

3.0 KiB
Raw Blame History

English | 中文

功能说明

key-rate-limit插件实现了基于特定键值实现限流,键值来源可以是 URL 参数、HTTP 请求头

配置字段

名称 数据类型 填写要求 默认值 描述
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 中选填一项 - 允许每天请求次数

配置示例

识别请求参数 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

识别请求头 x-ca-key进行区别限流

limit_by_header: x-ca-key
limit_keys:
- key: 102234
  query_per_second: 10
- key: 308239
  query_per_hour: 10

对特定路由或域名开启

# 使用 _rules_ 字段进行细粒度规则配置
_rules_:
# 规则一:按路由名称匹配生效
- _match_route_:
  - route-a
  - route-b
  limit_by_header: x-ca-key
  limit_keys:
  - key: 102234
    query_per_second: 10
# 规则二:按域名匹配生效
- _match_domain_:
  - "*.example.com"
  - test.com
  limit_by_header: x-ca-key
  limit_keys:
  - key: 102234
    query_per_second: 100

此例 _match_route_ 中指定的 route-aroute-b 即在创建网关路由时填写的路由名称,当匹配到这两个路由时,将使用此段配置; 此例 _match_domain_ 中指定的 *.example.comtest.com 用于匹配请求的域名,当发现域名匹配时,将使用此段配置; 配置的匹配生效顺序,将按照 _rules_ 下规则的排列顺序,匹配第一个规则后生效对应配置,后续规则将被忽略。