Parameters
See plugin common configurations for configuration options available to all plugins.
All parameters can be configured using environment variables. For example, you can save Redis password to an environment variable REDIS_PASSWORD
and configure redis_password
to be $env://REDIS_PASSWORD
.
count
integer
required
vaild vaule:
greater than 0
The maximum number of requests allowed within a given time interval.
time_window
integer
required
vaild vaule:
greater than 0
The time interval corresponding to the rate limiting
count
in seconds.key_type
string
default:
var
vaild vaule:
one of the
var
,var_combination
, orconstant
The type of key.
If the
key_type
isvar
, thekey
is interpreted a variable.If the
key_type
isvar_combination
, thekey
is interpreted as a combination of variables.If the
key_type
isconstant
, thekey
is interpreted as a constant.key
string
default:
remote_addr
The key to count requests by.
If the
key_type
isvar
, thekey
is interpreted a variable. The variable does not need to be prefixed by a dollar sign ($
). See built-in variables for avaialble variables.If the
key_type
isvar_combination
, thekey
is interpreted as a combination of variables. All variables should be prefixed by dollar signs ($
). For example, to configure thekey
to use a combination of two request headerscustom-a
andcustom-b
, thekey
should be configured as$http_custom_a $http_custom_b
.If the
key_type
isconstant
, thekey
is interpreted as a constant value.rejected_code
integer
default:
503
vaild vaule:
between 200 and 599 inclusive
The HTTP status code returned when a request is rejected for exceeding the threshold.
rejected_msg
string
default:
503
vaild vaule:
any non-empty string
The response body returned when a request is rejected for exceeding the threshold.
policy
string
default:
local
vaild vaule:
one of the
local
,redis
, orredis-cluster
The policy for rate limiting counter. If it is
local
, the counter is stored in memory locally. If it isredis
, the counter is stored on a Redis instance. If it isredis-cluster
, the counter is stored in a Redis cluster.allow_degradation
boolean
default:
false
if true, allow APISIX to continue handling requests without the plugin when the plugin or its dependencies become unavailable.
show_limit_quota_header
boolean
default:
true
if true, include
X-RateLimit-Limit
to show the total quota andX-RateLimit-Remaining
to show the remaining quota in the response header.group
string
vaild vaule:
non-empty
The
group
ID for the plugin, such that routes of the samegroup
can share the same rate limiting counter.redis_host
string
The address of the Redis node. Required when
policy
isredis
.redis_port
integer
default:
6379
vaild vaule:
greater or equal to 1
The port of the Redis node when
policy
isredis
.redis_username
string
The username for Redis if Redis ACL is used. If you use the legacy authentication method
requirepass
, configure only theredis_password
. Used whenpolicy
isredis
.redis_password
string
default:
6379
The password of the Redis node when
policy
isredis
orredis-cluster
.redis_database
integer
default:
0
vaild vaule:
greater or equal to 0
The database number in Redis when
policy
isredis
.redis_ssl
boolean
default:
false
if true, use SSL to connect to Redis cluster when
policy
isredis
.redis_ssl_verify
boolean
default:
false
if true, verify the server SSL certificate when
policy
isredis
.redis_timeout
integer
default:
1000
vaild vaule:
greater or equal to 1
The Redis timeout value in milliseconds when
policy
isredis
orredis-cluster
.redis_cluster_nodes
array[string]
The list of the Redis cluster nodes with at least two addresses. Required when policy is redis-cluster.
redis_cluster_name
string
The name of the Redis cluster. Required when
policy
isredis-cluster
.redis_cluster_ssl
boolean
default:
false
if true, use SSL to connect to Redis cluster when
policy
isredis-cluster
.redis_cluster_ssl_verify
boolean
default:
false
if true, verify the server SSL certificate when
policy
isredis-cluster
.sync_interval
number
default:
-1
vaild vaule:
greater than or equal to 0.1
The frequency of synchronizing counter data to Redis. Available only in Enterprise.
The
sync_interval
value should be smaller thantime_window
. A value of1
results in synchronizing counter data every second. A value of-1
yields no change in synchronizing behaviour, i.e. counter data will be synchronized for each request.