模块 ngx_stream_limit_conn_module
示例配置 指令 limit_conn limit_conn_dry_run limit_conn_log_level limit_conn_zone 内嵌变量 |
模块 ngx_stream_limit_conn_module
(1.9.3 版本)用于限制每个定义的键的连接数,特别是来自单个 IP 地址的连接数。
示例配置
stream { limit_conn_zone $binary_remote_addr zone=addr:10m; ... server { ... limit_conn addr 1; limit_conn_log_level error; } }
指令
语法: | limit_conn |
---|---|
默认: | — |
上下文: | stream , server |
设置共享内存区域和给定键值的最大允许连接数。当超过此限制时,服务器将关闭连接。例如,指令
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_dry_run off; |
上下文: | stream , server |
此指令出现在版本 1.17.6 中。
启用干预运行模式。在此模式下,连接数不受限制,但是在共享内存区域中,过多的连接数会像往常一样被计算。
语法: | limit_conn_log_level |
---|---|
默认: |
limit_conn_log_level error; |
上下文: | stream , server |
设置服务器限制连接数时所需的日志记录级别。
语法: | limit_conn_zone |
---|---|
默认: | — |
上下文: | stream |
设置一个共享内存区域的参数,该区域将保留各种键的状态。特别是,状态包括当前连接数。 key
可以包含文本、变量及其组合(1.11.2)。空键值的连接不会被计算。用法示例:
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千个32字节状态或约16千个64字节状态。如果区域存储耗尽,服务器将关闭连接。
另外,作为我们的商业订阅的一部分,自1.17.7版起,可以使用API获取或重置每个共享内存区域的状态信息。
内嵌变量
-
$limit_conn_status
-
保持连接数限制结果(1.17.6):
PASSED
、REJECTED
或REJECTED_DRY_RUN