nginx中文文档-ngx_stream_limit_conn_module

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

语法:limit_conn zone number
默认:—
上下文:stream, server

为给定的键值设置设置共享内存区域以及最大允许的连接数。当超过这个限制,服务器会关闭连接。例如指令

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

设置保存各种关键字状态的共享内存区域参数。状态包含当前连接数。目前,支持关键字的值是客户端地址的二进制格式,指定为$binary_remote_addr。空关键字值的连接不计数。用法示例:
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字节。1M的区域可以保存大约32,000个32字节状态或大约16,000个64字节状态。如果存储区域耗尽,服务器就会关闭连接。

nginx中文文档-ngx_stream_access_module

ngx_stream_access_module模块(1.9.2+)允许通过客户端地址限制访问。

示例配置

server {
    ...
    deny  192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    allow 2001:0db8::/32;
    deny  all;
}

规则按顺序检查,直到找到第一个匹配。在这个例子中,只允许IPv4网段10.1.1.0/16和192.168.1.0/24中除了192.168.1.1之外的IP地址以及IPv6网络2001:0db8::/32访问。

allow

语法:allow address | CIDR | unix: | all
默认:—
上下文:stream, server

允许指定网络或地址访问。如果指定特殊值unix:,允许所有UNIX-domain socket访问。

deny

语法:deny address | CIDR | unix: | all
默认:—
上下文:stream, server

禁止指定网络或地址访问。如果指定特殊值unix:,禁止所有UNIX-domain socket访问。