插件说明与使用介绍 属性 名称 类型 必选项 默认值 有效值 描述 count integer 必须 count > 0 指定时间窗口内的请求数量阈值。 timewindow integer 必须 timewindow > 0 时间窗口的大小(以秒为单位),超过这个时间就会重置。 keytype string 可选 "var" ["var", "varcombination", "constant"] key 的类型。 key string 可选 "remoteaddr" 用来做请求计数的依据,详情参见key的使用小节。如果 key 的值为空,$remoteaddr 会被作为默认 key。 rejectedcode integer 可选 503 [200,...,599] 当请求超过阈值被拒绝时,返回的HTTP 状态码。 rejectedmsg string 可选 非空 当请求超过阈值被拒绝时,返回的响应体。 allowdegradation boolean 可选 false 当限流插件功能临时不可用时(例如,Redis 超时)是否允许请求继续。当值设置为 true 时则自动允许请求继续,默认值是 false。 showlimitquotaheader boolean 可选 true 是否在响应头中显示XRateLimitLimit 和XRateLimitRemaining (限制的总请求数和剩余还可以发送的请求数),默认值是true。 group string 可选 非空 配置同样的group 的 Route 将共享同样的限流计数器。 redishost string 当policy为redis时必填 当使用redis 限速策略时,该属性是 Redis 服务节点的地址。 redisport integer 可选 6379 [1,...] 当使用redis 限速策略时,该属性是 Redis 服务节点的端口。 redispassword string 可选 当使用redis 或者 rediscluster 限速策略时,该属性是 Redis 服务节点的密码。 redistimeout integer 可选 1000 [1,...] 当使用redis 或者 rediscluster 限速策略时,该属性是 Redis 服务节点以毫秒为单位的超时时间。 redisclusternodes array 当policy 为 rediscluster 时必填 当使用rediscluster 限速策略时,该属性是 Redis 集群服务节点的地址列表(至少需要两个地址)。 redisclustername string 当policy 为 rediscluster 时必填 当使用rediscluster 限速策略时,该属性是 Redis 集群服务节点的名称。 count说明 当使用本地计数策略,即policy设置为local时,count数值为每个网关节点的限流计数。整个集群的限流计数count 节点数; 当使用redis时,即policy设置为redis或rediscluster时,count记录在redis中,表示整个集群的全局限流计数。 key的使用说明 用来做请求计数的有效值。 key的类型 key的取值类型使用keytype标识,keytype支持三种值:"var", "varcombination", "constant" keytype为"constant"时,那么 key 会被当作常量。 keytype为"var"时, key 会被当作变量名称。 keytype 为 "varcombination",那么 key 会当作变量组。比如如果设置 "remoteaddr consumername" 作为 key,那么插件会同时受 remoteaddr 和 consumername 两个变量的约束。 例如,可以使用主机名(或服务器区域)作为关键字,以便限制每个主机名规定时间内的请求次数。我们也可以使用客户端地址作为关键字,这样我们就可以避免单个客户端规定时间内多次的连接我们的服务。 当前接受的 key如下: key keytype为var时填写 keytype为varcombination时填写 "remoteaddr"(客户端 IP 地址) remoteaddr $remoteaddr "serveraddr"(服务端 IP 地址) serveraddr $serveraddr 请求头中的值"XForwardedFor" httpxforwardedFor $httpxforwardedFor 请求头中的值"XRealIP" httpxrealip $httpxrealip "consumername"(consumer 的 username) consumername $consumername "serviceid" serviceid $serviceid