模块 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
