key-rate-limit插件

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-aroute-b两个路由做如下插件配置:

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

    *.example.comtest.com两个域名做如下插件配置:

      limit_by_header: x-ca-key
      limit_keys:
      - key: 102234
        query_per_second: 100
    说明
    • 此例中的route-aroute-b即在创建网关路由时填写的路由名称,当匹配到这两个路由时,将使用此段配置。

    • 此例中的*.example.comtest.com用于匹配请求的域名,当发现域名匹配时,将使用此段配置。

    • 配置的匹配生效顺序,将按照规则的排列顺序,匹配第一个规则后生效对应配置,后续规则将被忽略。