nginx并发连接控制模块ngx_http_limit_conn_module

模块: ngx_http_limit_conn_module

作用: 根据定义的key限制并发连接数

配置示例:

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

    ...

    server {

        ...

        location /api/ {
            limit_conn addr 10;
            limit_conn_status 503;  
        }
    }
}

  

说明: 示例中定义key(zone=addr)为addr,分配内存大小为10m(zone=addr:10m)(如果限制域的存储空间耗尽了,对于后续所有请求,服务器都会返回 503),同一个ip($binary_remote_addr)和服务器连接超过10个(limit_conn addr 10)将会被拦截并返回503(limit_conn_status 503)错误码

涉及指令:

  limit_conn_zone

  limit_conn

  limit_conn_status

  limit_conn_log_level

指令详解:

limit_conn_zone

语法: limit_conn_zone key zone=name:size;(设置限制规则、区域名称及分配的内存大小)
可配置区域: http

key: 必选项;设置限制规则;取值可以是text文本、nginx变量或两者的组合;实例中使用的nginx变量$binary_remote_addr表示根据每个ip限制并发

name: 必选项; 自定义一个区域名称; 任意字符串

size: 分配内存的大小

 

limit_conn 

语法: limit_conn zone number; (使用由limit_conn_zone定义的拦截规则, 并设置具体的限制连接数量)
可配置区域: http, server, location

zone: 必选项; 由limit_conn_zone(zone=name)定义的名称; 表示使用定义的哪个限制规则

number: 必选项; 正整数; 表示具体的限制连接数量
limit_conn_status 

语法: limit_conn_status code;
默认值: 503
可配置区域: http, server, location

表示超出limit_req配置的请求数量后返回给客户端的错误码使用该指令最低版本 1.3.15

  

limit_conn_log_level 

语法: limit_conn_log_level info | notice | warn | error;
默认值: limit_conn_log_level error;
可配置区域: http, server, location

当服务器拒绝处理由于速率超过或延迟请求处理而拒绝处理请求时,设置所需的日志记录级别。

最低版本: 0.8.18