limit-count插件 本文将详细介绍limitcount插件功能、配置和使用。 功能说明 limitcount 插件使用固定时间窗口算法,主要用于限制单个客户端在指定的时间范围内对服务的总请求数,并且会在 HTTP 响应头中返回剩余可以请求的个数. 注意:limitcount 插件的速率限制策略默认是针对单个实例节点,即按照实例节点上的请求数来计数,当存在节点达到数量阈值后请求会被拒绝。如果想对实例集群限速,则policy需指定为redis,并填写redis相关配置信息。 配置字段 名称 类型 填写要求 默认值 有效值 描述 count integer 必填 count> 0 每个客户端在指定时间窗口内的总请求数量阈值。 timewindow integer 必填 timewindow> 0 时间窗口的大小(以秒为单位)。超过该属性定义的时间,则会重新开始计数。 rejectedcode integer 可选 429 [200,599] 当请求超过阈值被拒绝时,返回的 HTTP 状态码。 keytype string 可选 "var" ["var", "varcombination", "constant"] key 的类型。 key string 可选 "remoteaddr" 用来做请求计数的依据。如果 keytype 为 var,则 key 将被解释为变量。变量不需要以美元符号($)为前缀。如果 keytype 为 varcombination,那么 key 会被当作变量组合,所有变量都应该以美元符号 ($) 为前缀。如 $remoteaddr $consumername,插件会同时受 $remoteaddr 和 $consumername 两个变量的约束;如果 keytype 为 constant,那么 key 会被当作常量。如果 key 的值为空,$remoteaddr 会被作为默认 key。 rejectedmsg string 可选 非空 当请求超过阈值被拒绝时,返回的响应体。 showlimitquotaheader boolean 可选 true 当设置为 true 时,在响应头中显示 XRateLimitLimit(限制的总请求数)和 XRateLimitRemaining(剩余还可以发送的请求数)字段。 group string 可选 非空 对多个API设置相同 group,则路由可以共享相同的速率限制计数器。注意同一个group下的插件配置值需相同。 policy string 可选 "local" ["local","redis"] 速率限制计数器的策略。如果是 local,则计数器存储在本地内存中,按照单个实例节点计数。如果是 redis,则计数器存储在 Redis 实例上,按照实例集群计数。 redishost string 当 policy 为 redis 时必填 Redis 节点的地址。 redisport integer 当 policy 为 redis 时必填 6379 [1,65535] Redis 节点的端口。 redisusername string 可选 如果使用 Redis ACL,则为 Redis 的用户名。如果使用旧式身份验证方法 requirepass,则仅配置 redispassword。 redispassword string 可选 Redis 节点的密码。