Module ngx_stream_limit_conn_module

ngx_stream_limit_conn_module模块(1.9.3)用于限制每个已定义键的连接数,特别是来自单个 IP 地址的连接数。

Example Configuration

stream {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    ...

    server {

        ...

        limit_conn           addr 1;
        limit_conn_log_level error;
    }
}

Directives

Syntax:limit_conn zone number;
Default:
Context:stream , server

设置共享内存区域和给定键值的最大允许连接数。当超过此限制时,服务器将关闭连接。例如,指令

limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    ...
    limit_conn addr 1;
}

一次每个 IP 地址只允许一个连接。

当指定多个limit_conn指令时,将应用任何配置的限制。

当且仅当当前级别上没有limit_conn指令时,这些指令才从上一级继承。

Syntax:limit_conn_dry_run on | off;
Default:limit_conn_dry_run off;
Context:stream , server

该指令出现在版本 1.17.6 中。

启用空运行模式。在此模式下,连接数不受限制,但是,在共享内存区域中,过多连接的数将照常计算。

Syntax:limit_conn_log_level info | notice | warn | error;
Default:limit_conn_log_level error;
Context:stream , server

为服务器限制连接数的情况设置所需的日志记录级别。

Syntax:limit_conn_zone key zone=name:size;
Default:
Context:stream

设置共享内存区域的参数,该参数将保留各种键的状态。特别是,状态包括当前的连接数。 key可以包含文本,变量及其组合(1.11.2)。空键值的连接不予考虑。用法示例:

limit_conn_zone $binary_remote_addr zone=addr:10m;

在此,密钥是由$binary_remote_addr变量设置的客户端 IP 地址。 $binary_remote_addr的大小对于 IPv4 地址是 4 个字节,对于 IPv6 地址是 16 个字节。在 32 位平台上,存储状态始终占据 32 或 64 字节,在 64 位平台上,存储状态始终占据 64 字节。一个 1 兆字节的区域可以保留大约 3.2 万个 32 字节状态或大约 1.6 万个 64 字节状态。如果区域存储已用尽,则服务器将关闭连接。

Note

另外,作为commercial subscription的一部分,每个此类共享存储区的status information自 1.17.7 起可以是obtainedreset,而API

Embedded Variables

$limit_conn_status

  • 保留限制连接数(1.17.6)的结果:PASSEDREJECTEDREJECTED_DRY_RUN