LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

nginx作为正向和反向代理服务器限制http请求连接数

admin
2025年6月28日 22:24 本文热度 117

ngx_http_limit_conn_module模块

1. ngx_http_limit_conn_module模块根据设置的键值来限制连接数量,如:根据配置的IP地址来限制连接数量。

2. 只有正在被服务器处理并且请求头已经被读取的连接才会被计算成限制的数量。

limit_conn_zone指令

1. 设置一块内存区域,存储键状态信息和当前的连接数量。

2. 只能在http块中设置,语法为limit_conn_zone key zone=name:size;

3. key可以为文本、变量、文本和变量的组合。1.7.6以前的版本只能包含一个变量。

# 设置一块名为addr的区域,大小10m,$binary_remote_addr表示使用客户端IP地址为key。
limit_conn_zone $binary_remote_addr zone=addr:10m;

limit_conn和limit_conn_status指令

1. limit_conn指令用于限制指定键值的最大连接数量和共享内存区域。

2. 如果连接超过限制服务器返回拒绝请求错误默认返回状态码为503(可通过limit_conn_status指令自定义设置错误状态码)

3. 在HTTP/2和HTTP/3中每个并发请求都是一个独立连接。

4. 语法:limit_conn zone number;

5. 可配置块:http, server, location

6. 如,限制每个IP同一时间只允许1个连接

limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
    location /download/ {
        alias /var/www/images/;
        limit_conn addr 1;
    }
}    

7. 测试:jmeter中1秒内启动5个线程请求同一个资源(请求的图片约10M确保占用连接时间较长)

因为limit_conn addr 1限制了同一IP同一时间只允许1个连接,5个请求中只有一个返回200,另外4个请求被拒绝,可以看到默认错误状态码为503,如下图:


修改限制,同一IP同一时间允许3个连接,自定义拒绝请求的错误状态码为500,设置如下:

limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
    location /download/ {
        alias /var/www/images/;
        # 设置连接数
        limit_conn addr 3;
        # 自定义拒绝服务的错误状态码
        limit_conn_status 500;
    }
}    

调整后5个请求中3个成功,错误状态码变为500,如下图:


8. limit_conn指令可配置多个,这些指令同时生效,如:

limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

server {
    # 其它配置
    # ...

    # 每个客户端IP限10个连接
    limit_conn perip 10;
    # 每个虚拟主机(server块)限制100个连接
    limit_conn perserver 100;
}

9. limit_conn指令会覆盖上级配置块中的设置,只有当本级配置块中没有出现limit_conn指令才会从上级块中继承。

limit_conn_log_level指令

1. 用于设置连接超限后的日志记录级别。 

2. 语法为limit_conn_log_level info | notice | warn | error;,默认error级。

调整日志级别:

location /images/ {
    alias /var/www/images/;
    limit_conn addr 3;
    limit_conn_status 500;
    limit_conn_log_level info;
    error_log  logs/images_conn_limit.log  info;
}


设置日志级别为info效果:


阅读原文:原文链接


该文章在 2025/7/1 23:44:44 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved