文档

key-rate-limit插件

更新时间:

key-rate-limit插件实现了基于特定键值的限流,键值来源可以是URL参数、HTTP请求头。本文介绍如何配置key-rate-limit插件。

插件类型

流量管控。

配置字段

名称

数据类型

填写要求

默认值

描述

limit_by_header

string

选填。limit_by_headerlimit_by_param中选填一项。

-

配置获取限流键值的来源HTTP请求头名称。

limit_by_param

string

选填。limit_by_headerlimit_by_param中选填一项。

-

配置获取限流键值的来源URL参数名称。

limit_keys

array of object

必填。

-

配置匹配键值后的限流次数

子项limit_keys中每一项的配置字段说明。

名称

数据类型

填写要求

默认值

描述

key

string

必填。

-

匹配的键值。

query_per_second

number

选填。query_per_secondquery_per_minutequery_per_hourquery_per_day中选填一项。

-

允许每秒请求次数。

query_per_minute

number

选填。query_per_secondquery_per_minutequery_per_hourquery_per_day中选填一项。

-

允许每分钟请求次数。

query_per_hour

number

选填。query_per_secondquery_per_minutequery_per_hourquery_per_day中选填一项。

-

允许每小时请求次数。

query_per_day

number

选填。query_per_secondquery_per_minutequery_per_hourquery_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
  • 对特定路由或域名开启。

# 使用 _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_下规则的排列顺序,匹配第一个规则后生效对应配置,后续规则将被忽略。

  • 本页导读 (1)
文档反馈