Parameters
See plugin common configurations for configuration options available to all plugins.
Stream Route Parameters
conn
vaild vaule:
greater than 0
The number of concurrent stream connections allowed for each resolved key without delay.
burst
vaild vaule:
greater than or equal to 0
The number of additional concurrent connections allowed to wait. Connections above
conn + burstare rejected by closing the stream.default_conn_delay
vaild vaule:
greater than 0
The base delay in seconds for connections above
connand at or belowconn + burst. The calculated delay isdefault_conn_delay × floor((current connections - 1) / conn). Delays below 0.001 seconds are not applied.only_use_default_delay
On stream routes, connection latency does not update the delay, so this setting does not change stream behavior.
key_type
vaild vaule:
varorvar_combinationWhether
keynames one stream variable (var) or combines multiple stream variables (var_combination).key
The key used to group connection counters.
With
key_type: var, omit the dollar sign, for exampleremote_addr. If the variable has no value, APISIX falls back toremote_addr.With
key_type: var_combination, prefix each variable with a dollar sign, for example$remote_addr $server_addr.
HTTP Route Parameters
For HTTP routes in API7 Enterprise (from 3.8.17) and in APISIX (from 3.16.0), you should configure one of the following parameter sets, but not both:
conn,burst,default_conn_delay,keyrules,default_conn_delay
conn
vaild vaule:
greater than 0
The maximum number of concurrent requests allowed. Requests exceeding the configured limit and below
conn + burstwill be delayed.A string value can reference a built-in variable by prefixing the variable name with a dollar sign (
$). A resolved string must be a positive integer no greater than9007199254740991. If resolution fails or produces an invalid value, the gateway returns500 Internal Server Errorunless degradation is enabled.String-value support was introduced in API7 Enterprise 3.8.17 and APISIX 3.16.0. The validation requirements were introduced in API7 Enterprise 3.9.14 and 3.10.1, and in APISIX 3.17.0. Earlier APISIX versions accept only integer values.
Required with
burstandkeywhenrulesis not configured. Do not configure these top-level fields together withrules.burst
vaild vaule:
greater than or equal to 0
The number of excessive concurrent requests allowed to be delayed. Requests exceeding
conn + burstwill be rejected immediately.A string value can reference a built-in variable by prefixing the variable name with a dollar sign (
$). A resolved string must be a non-negative integer no greater than9007199254740991. If resolution fails or produces an invalid value, the gateway returns500 Internal Server Errorunless degradation is enabled.String-value support was introduced in API7 Enterprise 3.8.17 and APISIX 3.16.0. The validation requirements were introduced in API7 Enterprise 3.9.14 and 3.10.1, and in APISIX 3.17.0. Earlier APISIX versions accept only integer values.
Required with
connandkeywhenrulesis not configured. Do not configure these top-level fields together withrules.default_conn_delay
vaild vaule:
greater than 0
The base delay in seconds for requests above
connand at or belowconn + burst. The calculated delay isdefault_conn_delay × floor((current concurrent requests - 1) / conn). Delays below 0.001 seconds are not applied.only_use_default_delay
If true, omit request-latency feedback when a request completes. If false, pass the observed latency to the limiter.
In APISIX 3.19.0 and API7 Gateway 3.9.21 and 3.10.8, neither value changes the delay applied to later requests. Each request uses
default_conn_delayas its delay unit.Requests above
conn + burstare rejected immediately regardless of this setting.key_type
vaild vaule:
varorvar_combinationThe type of key.
If the
key_typeisvar, thekeyis interpreted as a variable.If the
key_typeisvar_combination, thekeyis interpreted as a combination of variables.key
The key to count requests by.
If the
key_typeisvar, thekeyis interpreted as a variable. The variable does not need to be prefixed by a dollar sign ($). See built-in variables for available variables.If the
key_typeisvar_combination, thekeyis interpreted as a combination of variables. All variables should be prefixed by dollar signs ($). For example, to configure thekeyto use a combination of two request headerscustom-aandcustom-b, thekeyshould be configured as$http_custom_a $http_custom_b.Required with
connandburstwhenrulesis not configured. Do not configure these top-level fields together withrules.rejected_code
vaild vaule:
between 200 and 599 inclusive
The HTTP status code returned when a request is rejected for exceeding the threshold.
rejected_msg
vaild vaule:
any non-empty string
The response body returned when a request is rejected for exceeding the threshold.
allow_degradation
If true, allow the gateway to continue handling requests without the plugin when the plugin or its dependencies become unavailable.
rules
An array of rate-limiting rules that are applied sequentially.
Rule support was introduced in API7 Enterprise 3.8.17 and APISIX 3.16.0.
conn
vaild vaule:
greater than 0
The maximum number of concurrent requests allowed. Requests exceeding the configured limit and below
conn + burstwill be delayed.A string value can reference a built-in variable by prefixing the variable name with a dollar sign (
$). A resolved string must be a positive integer no greater than9007199254740991.String-value validation was introduced in API7 Enterprise 3.9.14 and 3.10.1, and in APISIX 3.17.0.
burst
vaild vaule:
greater than or equal to 0
The number of excessive concurrent requests allowed to be delayed. Requests exceeding
conn + burstwill be rejected immediately.A string value can reference a built-in variable by prefixing the variable name with a dollar sign (
$). A resolved string must be a non-negative integer no greater than9007199254740991.String-value validation was introduced in API7 Enterprise 3.9.14 and 3.10.1, and in APISIX 3.17.0.
key
A variable expression that resolves to the key used to count requests for this rule. Prefix each variable with
$; both$variableand${variable}forms are accepted. For example, use${http_custom_a}or${http_custom_a}_${http_custom_b}.The top-level
key_typedoes not apply to rules. A rule applies when at least one variable reference resolves to a request value or its??default. A missing variable without a default contributes an empty string but does not count as resolved, so a partial expression can still apply when another variable resolves. An expression with no resolved variables, including a value with no variable references, is skipped.If
rulesis configured and no rule applies to a request, the gateway returns HTTP 500 by default. Settingallow_degradationtotruelets the request continue without connection limiting.In an ADC configuration, escape a gateway expression with a simple name, such as
${http_user}, as${http_user}. ADC treats an unescaped${NAME}containing only word characters as load-time environment interpolation; dotted gateway variable names pass through unchanged.
policy
vaild vaule:
local,redis, orredis-clusterThe policy for rate limiting counter. Required for API7 Enterprise (from 3.9.0) and optional for APISIX.
When set to
local, the counter is stored in memory locally. When set toredis, the counter is stored on a Redis instance. When set toredis-cluster, the counter is stored in a Redis cluster.redis_host
The address of the Redis node. Required when
policyisredis.redis_port
vaild vaule:
greater than or equal to 1
The port of the Redis node when
policyisredis.redis_username
The username for Redis if Redis ACL is used. If you use the legacy authentication method
requirepass, configure only theredis_password. Used whenpolicyisredis.redis_password
The password of the Redis node when
policyisredisorredis-cluster. The password is encrypted at rest in API7 Enterprise. In APISIX, enable data encryption to encrypt it before etcd storage. Encryption was introduced in API7 Enterprise 3.9.16 and 3.10.2, and APISIX 3.18.0.redis_database
vaild vaule:
greater than or equal to 0
The database number in Redis when
policyisredis.redis_ssl
If true, use SSL to connect to Redis when
policyisredis.redis_ssl_verify
If true, verify the server SSL certificate when
policyisredis.redis_server_name
TLS server name used for SNI and, when certificate verification is enabled, hostname verification. Applies when
policyisredisandredis_sslistrue. Defaults toredis_host. If the selected value is an IP address, no server name is sent. To verify a DNS-named certificate when connecting by IP, set this field to the certificate's DNS name and enableredis_ssl_verify.Introduced in API7 Enterprise 3.9.21 and 3.10.8, and in APISIX 3.19.0. This field applies to the single-node Redis connector, not Redis Cluster or Sentinel.
redis_timeout
vaild vaule:
greater than or equal to 1
The Redis timeout value in milliseconds when
policyisredisorredis-cluster.redis_keepalive_timeout
vaild vaule:
greater than or equal to 1000
Keepalive timeout in milliseconds for Redis when
policyisredisorredis-cluster.This parameter is available in API7 Enterprise from version 3.9.17 on the 3.9 line and from version 3.10.4 on the 3.10 line, and in APISIX from version 3.15.0.
redis_keepalive_pool
vaild vaule:
greater than or equal to 1
Keepalive pool size for Redis when
policyisredisorredis-cluster.This parameter is available in API7 Enterprise from version 3.9.17 on the 3.9 line and from version 3.10.4 on the 3.10 line, and in APISIX from version 3.15.0.
key_ttl
TTL of the Redis key in seconds when
policyisredisorredis-cluster. Available in API7 Enterprise from version 3.9.4 and in APISIX from version 3.15.0.redis_cluster_nodes
The list of Redis cluster nodes with at least one address. Required when
policyisredis-cluster.redis_cluster_name
The name of the Redis cluster. Required when
policyisredis-cluster.redis_cluster_ssl
If true, use SSL to connect to Redis cluster when
policyisredis-cluster.redis_cluster_ssl_verify
If true, verify the server SSL certificate when
policyisredis-cluster.