跳到主要内容

参数

有关所有插件均可使用的配置项,请参阅插件通用配置

该插件支持使用 env:// 前缀从环境变量引用参数值,也支持使用 secret:// 前缀从密钥管理器(例如 HashiCorp Vault 的 KV 密钥引擎)引用参数值。有关更多信息,请参阅插件中的环境变量密钥

  • count

    integer | string


    必填


    有效值:

    大于 0


    给定时间间隔内允许的最大请求数。

    在 API7 企业版(自 3.8.17 起)和 APISIX(自 3.16.0 起)中,此参数还支持字符串类型,并允许使用以美元符号($)为前缀的内置变量。较早的 APISIX 版本仅支持整数类型。

  • time_window

    integer | string


    必填


    有效值:

    大于 0


    与速率限制 count 对应的时间间隔,单位为秒。

    在 API7 企业版(自 3.8.17 起)和 APISIX(自 3.16.0 起)中,此参数还支持字符串类型,并允许使用以美元符号($)为前缀的内置变量。较早的 APISIX 版本仅支持整数类型。

  • key_type

    string


    默认值:var


    有效值:

    varvar_combinationconstant


    密钥类型。

    如果 key_typevar,则 key 将被解释为变量。

    如果 key_typevar_combination,则 key 将被解释为变量组合。

    如果 key_typeconstant,则 key 将被解释为常量。

  • key

    string


    默认值:remote_addr


    用于计数请求的密钥。

    如果 key_typevar,则 key 将被解释为变量。变量不需要以美元符号($)作为前缀。请参阅内置变量以获取可用变量。

    如果 key_typevar_combination,则 key 将被解释为变量组合。所有变量都应以美元符号($)作为前缀。例如,要配置 key 使用两个请求头 custom-acustom-b 的组合,则 key 应配置为 $http_custom_a $http_custom_b

    如果 key_typeconstant,则 key 将被解释为常量值。

  • rejected_code

    integer


    默认值:503


    有效值:

    介于 200 和 599 之间(含边界值)


    当请求因超过阈值而被拒绝时返回的 HTTP 状态码。

  • rejected_msg

    string


    有效值:

    任意非空字符串


    当请求因超过阈值而被拒绝时返回的响应体。

  • policy

    string


    默认值:local


    有效值:

    localredisredis-clusterredis-sentinel


    速率限制计数器的策略。API7 企业版中为必填项,APISIX 中为可选项。

    限速计数器的策略。如果为 local,则计数器存储在本地内存中。如果为 redis,则计数器存储在 Redis 实例上。如果为 redis-cluster,则计数器存储在 Redis 集群中。如果为 redis-sentinel,则计数器存储在由 Redis Sentinel 管理的 Redis 节点上,以实现高可用。

    其中 redis-sentinel 取值自 API7 企业版 3.9.14 起可用。

  • window_type

    string


    默认值:fixed


    有效值:

    fixedsliding


    限速窗口算法。如果为 fixed,则使用固定窗口算法,每个时间窗口独立地实施配额。如果为 sliding,则使用滑动窗口算法,在计算当前计数时对上一个窗口进行加权,从而平滑窗口边界处的突发流量。

    自 API7 企业版 3.9.14 起可用。

  • sync_interval

    number


    默认值:-1


    将本地计数器同步到共享存储(Redis)的时间间隔(以秒为单位)。仅当 policyredisredis-clusterredis-sentinel 时生效。取值为 -1 时禁用延迟同步,每个请求都直接同步。启用时,取值不应小于 0.1 且应小于 time_window。启用延迟同步可减少访问共享存储的往返次数,但代价是限速实施略微宽松。

    自 API7 企业版 3.9.14 起可用。

  • allow_degradation

    boolean


    默认值:false


    如果为 true,则在插件或其依赖项不可用时允许 APISIX 继续处理请求(不使用该插件)。

  • show_limit_quota_header

    boolean


    默认值:true


    如果为 true,则包含以下速率限制响应头:

    • X-RateLimit-Limit 显示总配额。
    • X-RateLimit-Remaining 显示剩余配额。
    • X-RateLimit-Reset 显示计数器重置前的剩余秒数。
  • group

    string


    有效值:

    非空


    插件的 group ID,以便同一 group 的路由可以共享相同的限速计数器。

  • redis_host

    string


    Redis 节点的地址。当 policyredis 时必填。

  • redis_port

    integer


    默认值:6379


    有效值:

    大于或等于 1


    policyredis 时 Redis 节点的端口。

  • redis_username

    string


    如果使用 Redis ACL,则为 Redis 用户名。如果你使用传统的身份验证方法 requirepass,请仅配置 redis_password。当 policyredisredis-sentinel 时使用。

  • redis_password

    string


    policyredisredis-clusterredis-sentinel 时 Redis 节点的密码。

  • redis_database

    integer


    默认值:0


    有效值:

    大于或等于 0


    policyredisredis-sentinel 时 Redis 中的数据库编号。

  • redis_ssl

    boolean


    默认值:false


    如果为 true,则在 policyredis 时使用 SSL 连接到 Redis。

  • redis_ssl_verify

    boolean


    默认值:false


    如果为 true,则在 policyredis 时验证服务器 SSL 证书。

  • redis_timeout

    integer


    默认值:1000


    有效值:

    大于或等于 1


    policyredisredis-cluster 时的 Redis 超时值(以毫秒为单位)。

  • redis_keepalive_timeout

    integer


    默认值:10000


    有效值:

    大于或等于 1000


    policyredisredis-cluster 时的 Redis keepalive 超时时间(以毫秒为单位)。

    此参数自 API7 企业版 3.9.16 起可用,APISIX 自 3.15.0 起可用。

  • redis_keepalive_pool

    integer


    默认值:100


    有效值:

    大于或等于 1


    policyredisredis-cluster 时的 Redis keepalive 连接池大小。

    此参数自 API7 企业版 3.9.16 起可用,APISIX 自 3.15.0 起可用。

  • redis_cluster_nodes

    array[string]


    Redis 集群节点列表,至少包含两个地址。当 policyredis-cluster 时必填。

  • redis_cluster_name

    string


    Redis 集群的名称。当 policyredis-cluster 时必填。

  • redis_cluster_ssl

    boolean


    默认值:false


    如果为 true,则在 policyredis-cluster 时使用 SSL 连接到 Redis 集群。

  • redis_cluster_ssl_verify

    boolean


    默认值:false


    如果为 true,则在 policyredis-cluster 时验证服务器 SSL 证书。

  • redis_sentinels

    array[object]


    Redis Sentinel 节点列表,至少包含一个节点。当 policyredis-sentinel 时必填。每个节点为一个对象,包含 host(字符串)和 port(介于 1 到 65535 之间的整数)。

    自 API7 企业版 3.9.14 起可用。

  • redis_master_name

    string


    由 Sentinel 监控的 Redis 主节点名称。当 policyredis-sentinel 时必填。

    自 API7 企业版 3.9.14 起可用。

  • redis_role

    string


    默认值:master


    有效值:

    masterslave


    policyredis-sentinel 时要连接的 Redis 节点角色。使用 master 进行读写操作,或使用 slave 连接只读副本。

    自 API7 企业版 3.9.14 起可用。

  • redis_connect_timeout

    integer


    默认值:1000


    有效值:

    大于或等于 1


    policyredis-sentinel 时的连接超时时间(以毫秒为单位)。

    自 API7 企业版 3.9.14 起可用。

  • redis_read_timeout

    integer


    默认值:1000


    有效值:

    大于或等于 1


    policyredis-sentinel 时的读取超时时间(以毫秒为单位)。

    自 API7 企业版 3.9.14 起可用。

  • sentinel_username

    string


    policyredis-sentinel 时用于向 Redis Sentinel 节点进行身份验证的用户名。

    自 API7 企业版 3.9.14 起可用。

  • sentinel_password

    string


    policyredis-sentinel 时用于向 Redis Sentinel 节点进行身份验证的密码。

    自 API7 企业版 3.9.14 起可用。

  • rules

    array[object]


    按顺序应用的速率限制规则数组。配置后,将忽略顶层的 counttime_windowkey 字段。

    自 API7 企业版 3.8.17 和 APISIX 3.16.0 起可用。

    • count

      integer | string


      必填


      有效值:

      大于 0


      给定 time_window 内允许的最大请求数。

      此参数还支持字符串类型,并允许使用以美元符号($)为前缀的内置变量

    • time_window

      integer | string


      必填


      有效值:

      大于 0


      速率限制 count 对应的时间间隔,单位为秒。

      此参数还支持字符串类型,并允许使用以美元符号($)为前缀的内置变量

    • key

      string


      必填


      用于对请求计数的键。支持 APISIX 内置变量和 NGINX 变量。

      如果 key_typevar,变量无需以美元符号($)作为前缀。

      如果 key_typevar_combination,所有变量都应以美元符号($)作为前缀。

    • header_prefix

      string


      在此规则的速率限制响应头中插入到 X-RateLimit- 后的前缀(例如,foo 会生成 X-RateLimit-foo-LimitX-RateLimit-foo-RemainingX-RateLimit-foo-Reset)。仅在 show_limit_quota_headertrue 时使用。

插件元数据

  • limit_header

    string


    默认值:X-RateLimit-Limit


    表示速率限制总配额的默认响应头名称。

  • remaining_header

    string


    默认值:X-RateLimit-Remaining


    表示速率限制剩余配额的默认响应头名称。

  • reset_header

    string


    默认值:X-RateLimit-Reset


    表示速率限制计数器重置前剩余秒数的默认响应头名称。