跳到主要内容

参数

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

备注

在 API7 企业版 3.8.17 及更高版本和 Apache APISIX 3.16.0 及更高版本中,请配置以下两组参数之一,不要同时配置:

  • conn, burst, default_conn_delay, key
  • rules, default_conn_delay
  • conn

    integer | string


    必填


    有效值:

    大于 0


    允许的最大并发请求数。超过此配置限制但低于 conn + burst 的请求将被延迟处理。

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

  • burst

    integer | string


    必填


    有效值:

    大于或等于 0


    允许延迟处理的额外并发请求数。超过 conn + burst 的请求将被立即拒绝。

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

  • default_conn_delay

    number


    必填


    有效值:

    大于 0


    对于超过 conn 但不超过 conn + burst 的并发请求,允许的处理延迟(秒)。此值可根据 only_use_default_delay 设置动态调整。

  • only_use_default_delay

    boolean


    默认值:false


    如果为 false,则根据请求超出 conn 限制的程度按比例延迟请求。拥塞越严重,延迟越大。例如,conn5burst3default_conn_delay1 时,6 个并发请求会导致 1 秒延迟,7 个请求导致 2 秒延迟,8 个请求导致 3 秒延迟,依此类推,直至达到 conn + burst 的总限制,超出此限制的请求将被拒绝。

    如果为 true,则使用 default_conn_delay 来延迟所有在 burst 范围内的额外请求。超出 conn + burst 的请求将被立即拒绝。例如,conn5burst3default_conn_delay1 时,6、7 或 8 个并发请求都将被精确地延迟 1 秒。

  • key_type

    string


    默认值:var


    有效值:

    varvar_combination


    键的类型。

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

    如果 key_typevar_combination,则 key 被解释为多个变量的组合。

  • key

    string


    必填


    用于统计请求的键。

    如果 key_typevar,则 key 被解释为一个变量。变量不需要以美元符号 ($) 为前缀。可用的变量请参见内置变量

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

  • rejected_code

    integer


    默认值:503


    有效值:

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


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

  • rejected_msg

    string


    有效值:

    任意非空字符串


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

  • allow_degradation

    boolean


    默认值:false


    如果为 true,当插件或其依赖项不可用时,允许网关在没有该插件的情况下继续处理请求。

  • rules

    array[object]


    按顺序应用的限流规则数组。

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

    • conn

      integer | string


      必填


      有效值:

      大于 0


      允许的最大并发请求数。超过此配置限制但低于 conn + burst 的请求将被延迟处理。

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

    • burst

      integer | string


      必填


      有效值:

      大于或等于 0


      允许延迟处理的额外并发请求数。超过 conn + burst 的请求将被立即拒绝。

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

    • key

      string


      必填


      用于统计请求的键。如果配置的键不存在,则不会执行该规则。

      如果 key_typevar,则 key 被解释为一个变量。变量不需要以美元符号 ($) 为前缀。可用的变量请参见内置变量

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

  • policy

    string


    默认值:local


    有效值:

    localredisredis-cluster


    限流计数器的策略。如果是 local,计数器存储在本地内存中。如果是 redis,计数器存储在 Redis 实例上。如果是 redis-cluster,计数器存储在 Redis 集群中。

    如果你使用的是 API7 企业版,此选项从 3.9.0 版本开始可用。

  • redis_host

    string


    Redis 节点的地址。当 policyredis 时必须配置。

  • redis_port

    integer


    默认值:6379


    有效值:

    大于或等于 1


    policyredis 时 Redis 节点的端口。

  • redis_username

    string


    如果使用 Redis ACL,则为此 Redis 的用户名。如果使用传统的认证方法 requirepass,则只配置 redis_password。在 policyredis 时使用。

  • redis_password

    string


    policyredisredis-cluster 时 Redis 节点的密码。API7 网关自 3.10.2 起会在保存到数据库前使用 AES256 加密该值;APISIX 自 3.18.0 起会在存储到 etcd 前使用 AES 加密该值。

  • redis_database

    integer


    默认值:0


    有效值:

    大于或等于 0


    policyredis 时 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 的保活超时时间(毫秒)。

    此参数在 API7 企业版 3.9.x 系列中自 3.9.16 起可用,在 3.10.x 系列中自 3.10.3 起可用,并且在 APISIX 中自 3.15.0 起可用。

  • redis_keepalive_pool

    integer


    默认值:100


    有效值:

    大于或等于 1


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

    此参数在 API7 企业版 3.9.x 系列中自 3.9.16 起可用,在 3.10.x 系列中自 3.10.3 起可用,并且在 APISIX 中自 3.15.0 起可用。

  • key_ttl

    integer


    默认值:3600


    policyredisredis-cluster 时,Redis Key 的 TTL,单位为秒。自 API7 企业版 3.9.4 和 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 证书。