模块 ngx_http_limit_conn_module
limit_conn limit_conn_dry_run limit_conn_log_level limit_conn_status limit_zone 嵌入变量limit_conn_zone 的示例配置Directives |
该模块用于
限制每个定义的键的连接数,在
特别是来自单个 IP 地址的连接数。ngx_http_limit_conn_module
并非所有连接都被计算在内。 仅当连接具有服务器正在处理的请求时,才会对连接进行计数 并且整个请求标头已被读取。
示例配置
http { limit_conn_zone $binary_remote_addr zone=addr:10m; ... server { ... location /download/ { limit_conn addr 1; }
Directives
语法: |
limit_conn |
---|---|
默认值: | — |
上下文: |
http , ,server location |
设置共享内存区域 以及给定键值允许的最大连接数。 超过此限制时,服务器将返回错误以响应请求。 例如,Directives
limit_conn_zone $binary_remote_addr zone=addr:10m; server { location /download/ { limit_conn addr 1; }
一次只允许每个 IP 地址有一个连接。
在 HTTP/2 和 HTTP/3 中, 每个并发请求都被视为一个单独的连接。
可能有多个Directives。
例如,以下配置将限制数量
每个客户端 IP 到服务器的连接数,同时,
与虚拟服务器的连接总数:limit_conn
limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; server { ... limit_conn perip 10; limit_conn perserver 100; }
这些Directives继承自之前的配置级别
当且仅当没有Directives时
在当前级别上定义。limit_conn
语法: |
limit_conn_dry_run |
---|---|
默认值: |
limit_conn_dry_run off; |
上下文: |
http , ,server location |
该Directives出现在版本 1.17.6 中。
启用试运行模式。 在此模式下,连接数不受限制,但是, 在共享内存区中,将计算过多连接的数量 照常。
语法: |
limit_conn_log_level
|
---|---|
默认值: |
limit_conn_log_level error; |
上下文: |
http , ,server location |
该Directives出现在版本 0.8.18 中。
为服务器 限制连接数。
语法: |
limit_conn_status |
---|---|
默认值: |
limit_conn_status 503; |
上下文: |
http , ,server location |
该Directives出现在版本 1.3.15 中。
将状态代码设置为响应被拒绝的请求而返回。
语法: |
limit_conn_zone
|
---|---|
默认值: | — |
上下文: |
http |
设置共享内存区域的参数
这将保留各种 key 的状态。
具体而言,该状态包括当前连接数。
可以包含文本、变量及其组合。
不考虑具有空 key 值的请求。key
在 1.7.6 版本之前, a 可以只包含一个变量。key
使用示例:
limit_conn_zone $binary_remote_addr zone=addr:10m;
在这里,客户端 IP 地址用作键。
请注意,此处使用的变量不是 。
变量的大小可以
从 7 到 15 字节不等。
stored 状态占据
在 32 位平台上为 32 或 64 字节内存,始终为 64 字节
字节。
变量的大小
对于 IPv4 地址,始终为 4 字节,对于 IPv6 地址,始终为 16 字节。
stored 状态始终占用 32 或 64 字节
在 32 位平台上为 64 字节,在 64 位平台上为 64 字节。
1 MB 区域可以保留大约 32,000 个 32 字节的状态
或大约 16,000 个 64 字节的状态。
如果区域存储已用尽,服务器会将错误返回给所有进一步的请求。$remote_addr
$binary_remote_addr
$remote_addr
$binary_remote_addr
此外,作为我们商业订阅的一部分, 从 1.17.7 开始,可以使用 API 获取或重置每个此类共享内存区域的状态信息。
语法: |
limit_zone
|
---|---|
默认值: | — |
上下文: |
http |
该Directives在 1.1.8 版中已过时 ,并在版本 1.7.6 中删除。 等效的 limit_conn_zone Directives 应该改用更改的语法:
limit_conn_zone
$variable
zone
=name
:size
;
嵌入变量
$limit_conn_status
- 保留限制连接数的结果 (1.17.6):、 、 或
PASSED
REJECTED
REJECTED_DRY_RUN