参数
有关所有插件均可使用的配置项,请参阅插件通用配置。
该插件支持使用 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有效值:
var、var_combination或constant密钥类型。
如果
key_type为var,则key将被解释为变量。如果
key_type为var_combination,则key将被解释为变量组合。如果
key_type为constant,则key将被解释为常量。key
string
默认值:
remote_addr用于计数请求的密钥。
如果
key_type为var,则key将被解释为变量。变量不需要以美元符号($)作为前缀。请参阅内置变量以获取可用变量。如果
key_type为var_combination,则key将被解释为变量组合。所有变量都应以美元符号($)作为前缀。例如,要配置key使用两个请求头custom-a和custom-b的组合,则key应配置为$http_custom_a $http_custom_b。如果
key_type为constant,则key将被解释为常量值。rejected_code
integer
默认值:
503有效值:
介于 200 和 599 之间(含边界值)
当请求因超过阈值而被拒绝时返回的 HTTP 状态码。
rejected_msg
string
有效值:
任意非空字符串
当请求因超过阈值而被拒绝时返回的响应体。
policy
string
默认值:
local有效值:
local、redis、redis-cluster或redis-sentinel速率限制计数器的策略。API7 企业版中为必填项,APISIX 中为可选项。
限速计数器的策略。如果为
local,则计数器存储在本地内存中。如果为redis,则计数器存储在 Redis 实例上。如果为redis-cluster,则计数器存储在 Redis 集群中。如果为redis-sentinel,则计数器存储在由 Redis Sentinel 管理的 Redis 节点上,以实现高可用。其中
redis-sentinel取值自 API7 企业版 3.9.14 起可用。window_type
string
默认值:
fixed有效值:
fixed或sliding限速窗口算法。如果为
fixed,则使用固定窗口算法,每个时间窗口独立地实施配额。如果为sliding,则使用滑动窗口算法,在计算当前计数时对上一个窗口进行加权, 从而平滑窗口边界处的突发流量。自 API7 企业版 3.9.14 起可用。
sync_interval
number
默认值:
-1将本地计数器同步到共享存储(Redis)的时间间隔(以秒为单位)。仅当
policy为redis、redis-cluster或redis-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
有效值:
非空
插件的
groupID,以便同一group的路由可以共享相同的限速计数器。redis_host
string
Redis 节点的地址。当
policy为redis时必填。redis_port
integer
默认值:
6379有效值:
大于或等于 1
当
policy为redis时 Redis 节点的端口。redis_username
string
如果使用 Redis ACL,则为 Redis 用户名。如果你使用传统的身份验证方法
requirepass,请仅配置redis_password。当policy为redis或redis-sentinel时使用。redis_password
string
当
policy为redis、redis-cluster或redis-sentinel时 Redis 节点的密码。redis_database
integer
默认值:
0有效值:
大于或等于 0
当
policy为redis或redis-sentinel时 Redis 中的数据库编号。redis_ssl
boolean
默认值:
false如果为 true,则在
policy为redis时使用 SSL 连接到 Redis。redis_ssl_verify
boolean
默认值:
false如果为 true,则在
policy为redis时验证服务器 SSL 证书。redis_timeout
integer
默认值:
1000有效值:
大于或等于 1
当
policy为redis或redis-cluster时的 Redis 超时值(以毫秒为单位)。redis_keepalive_timeout
integer
默认值:
10000有效值:
大于或等于 1000
当
policy为redis或redis-cluster时的 Redis keepalive 超时时间(以毫秒为单位)。此参数自 API7 企业版 3.9.16 起可用,APISIX 自 3.15.0 起可用。
redis_keepalive_pool
integer
默认值:
100有效值:
大于或等于 1
当
policy为redis或redis-cluster时的 Redis keepalive 连接池大小。此参数自 API7 企业版 3.9.16 起可用,APISIX 自 3.15.0 起可用。
redis_cluster_nodes
array[string]
Redis 集群节点列表,至少包含两个地址。当
policy为redis-cluster时必填。redis_cluster_name
string
Redis 集群的名称。当
policy为redis-cluster时必填。redis_cluster_ssl
boolean
默认值:
false如果为 true,则在
policy为redis-cluster时使用 SSL 连接到 Redis 集群。redis_cluster_ssl_verify
boolean
默认值:
false如果为 true,则在
policy为redis-cluster时验证服务器 SSL 证书。redis_sentinels
array[object]
Redis Sentinel 节点列表,至少包含一个节点。当
policy为redis-sentinel时必填。每个节点为一个对象,包含host(字符串)和port(介于 1 到 65535 之间的整数)。自 API7 企业版 3.9.14 起可用。
redis_master_name
string
由 Sentinel 监控的 Redis 主节点名称。当
policy为redis-sentinel时必填。自 API7 企业版 3.9.14 起可用。
redis_role
string
默认值:
master有效值:
master或slave当
policy为redis-sentinel时要连接的 Redis 节点角色。使用master进行读写操作,或使用slave连接只读副本。自 API7 企业版 3.9.14 起可用。
redis_connect_timeout
integer
默认值:
1000有效值:
大于或等于 1
当
policy为redis-sentinel时的连接超时时间(以毫秒为单位)。自 API7 企业版 3.9.14 起可用。
redis_read_timeout
integer
默认值:
1000有效值:
大于或等于 1
当
policy为redis-sentinel时的读取超时时间(以毫秒为单位)。自 API7 企业版 3.9.14 起可用。
sentinel_username
string
当
policy为redis-sentinel时用于向 Redis Sentinel 节点进行身份验证的用户名。自 API7 企业版 3.9.14 起可用。
sentinel_password
string
当
policy为redis-sentinel时用于向 Redis Sentinel 节点进行身份验证的密码。自 API7 企业版 3.9.14 起可用。
rules
array[object]
按顺序应用的速率限制规则数组。配置后,将忽略顶层的
count、time_window和key字段。自 API7 企业版 3.8.17 和 APISIX 3.16.0 起可用。
count
time_window
key
string
必填
用于对请求计数的键。支持 APISIX 内置变量和 NGINX 变量。
如果
key_type为var,变量无需以美元符号($)作为前缀。如果
key_type为var_combination,所有变量都应以美元符号($)作为前缀。header_prefix
string
在此规则的速率限制响应头中插入到
X-RateLimit-后的前缀(例如,foo会生成X-RateLimit-foo-Limit、X-RateLimit-foo-Remaining和X-RateLimit-foo-Reset)。仅在show_limit_quota_header为true时使用。
插件元数据
limit_header
string
默认值:
X-RateLimit-Limit表示速率限制总配额的默认响应头名称。
remaining_header
string
默认值:
X-RateLimit-Remaining表示速率限制剩余配额的默认响应头名称。
reset_header
string
默认值:
X-RateLimit-Reset表示速率限制计数器重置前剩余秒数的默认响应头名称。