ngx_stream_limit_conn_module

ngx_stream_limit_conn_module 模块(1.9.3)用于限制每个定义的 key 的连接数,特别是来自单个 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 number;
默认 ——
上下文 stream、server

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

limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    ...
    limit_conn addr 1;
}

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

如果指定了几个 limit_conn 指令,则将应用所有已配置的限制。

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

limit_conn_log_level

- 说明
语法 limit_conn_log_level info | notice | warn | error;
默认 limit_conn_log_level error;
上下文 stream、server

为服务器限制连接数设置日志记录级别。

limit_conn_zone

- 说明
语法 limit_conn_zone key zone=name:size;
默认 ——
上下文 stream

为指定的共享内存区域设置参数,该区域将保留各种 key 的状态。尤其是状态包括当前的连接数。key 可以包含文本、变量及其组合(1.11.2)。不计算 key 为空的连接。用法示例:

limit_conn_zone $binary_remote_addr zone=addr:10m;

上述中,key 是一个 $binary_remote_addr 变量设置的客户端 IP 地址。$binary_remote_addr 的大小为 IPv4 地址的 4 个字节或 IPv6 地址的 16 个字节。存储状态在 32 位平台上总是占用 32 或 64 字节,在 64 位平台上占用 64 字节。一兆字节区域可以保留大约 32,000 个 32 字节状态或大约 16,000 个 64 字节状态。如果区域存储耗尽,服务器将关闭连接。

最后编辑: kuteng  文档更新时间: 2021-11-01 16:44   作者:kuteng