连接限制#
该模块用于按照定义的键限制每个键的连接数,特别是限制来自单个 IP 地址的连接数。
配置示例#
stream {
limit_conn_zone $binary_remote_addr zone=addr:10m;
...
server {
...
limit_conn addr 1;
limit_conn_log_level error;
}
}
指令#
limit_conn#
设置共享内存区域以及给定键值的最大允许连接数。当超过此限制时,服务器将关闭连接。例如,指令
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
...
limit_conn addr 1;
}
允许每个 IP 地址同时只有一个连接。
当指定多个 limit_conn 指令时,任何配置的限制都会适用。
这些指令仅在当前级别未定义任何 limit_conn 指令时,从上一级配置继承。
limit_conn_dry_run#
启用试运行模式。在此模式下,连接数并不限于限制,但在 共享内存区域 中,超额连接数的计算照常进行。
limit_conn_log_level#
|
|
默认值 |
|
stream, server |
设置当服务器限制连接数时的所需日志记录级别。
limit_conn_zone#
设置用于保存各种键状态的共享内存区域的参数。特别是,状态包含当前连接数。键可以包含文本、变量及其组合。连接的键值为空时不计算在内。
使用示例:
limit_conn_zone $binary_remote_addr zone=addr:10m;
在此,由 $binary_remote_addr
变量设置的客户端 IP 地址。
对于 IPv4 地址,$binary_remote_addr 的大小为 4 字节;对于 IPv6 地址,大小为 16 字节。在 32 位平台上,存储的状态始终占据 32 或 64 字节,在 64 位平台上则为 64 字节。
一个兆字节的区域可以存储大约 32,000 个 32 字节状态或大约 16,000 个 64 字节状态。如果区域存储被耗尽,服务器将关闭连接。
内置变量#
$limit_conn_status
#
保存限制连接数的结果:PASSED
,REJECTED
或 REJECTED_DRY_RUN