欢迎来到奇迪科技(深圳)有限公司,超值服务提供卓越产品!
相关栏目

文档中心

Linux限制并发请求,阻止高频访问或采集

作者:Admin 来源:www.qvdv.net 更新时间:2025-01-16

如果想要让Linux限制并发请求,阻止高频访问或采集,需要知道如何配置limit_req_zone模块,例如巧妙设置burst和delay参数就可以利用limit_req_zone阻止恶意的高频请求并且返回503状态码,防止耗费服务器的资源。

配置limit_req_zone模块参数说明:

使用limit_req_zone模块,需要了解以下参数:

$binary_remote_addr:客户端IP作为存储键值

zone:定义在内存中开辟的存储区域名称、存储容量,例如:zone=zone_name:1m,表示存储区域名称zone_name、存储容量为1m(大约可以存储一万六千个独立IP数据)。

rate:每秒处理的请求数,例如:1r/s,表示每秒处理一次请求。

burst:突发请求数量,表示高频请求时允许额外执行的最大请求数量。

delay:延迟处理的请求量,将超出rate和burst设定的总请求量的请求挂起列入队列延迟处理。

nodelay:不延迟处理,只直接同时处理不超过rate和burst设定的总请求量,超出的请求全部丢弃。

用法举例说明:

1、给储存空间req_limit_zone分配1兆存储容量,每秒中不延时最多处理10个请求(每秒处理5个请求、最多允许处理5个突发剧增请求),超出请求不处理且返回444状态码,其指令如下:

limit_req_zone $binary_remote_addr zone=req_limit_zone:1m rate=5r/s;
limit_req zone=req_limit_zone burst=5 nodelay;
limit_req_status 444;#如果不设置,默认就是503状态码

 2、例如,要求给储存空间req_name分配10兆存储容量、每秒中最多处理8个请求(每秒处理5个请求、最多允许处理3个突发剧增请求),如果每秒内超过8个请求,最多允许挂起2个请求列队延时处理,其余多出的请求不处理且返回503状态码,其指令如下:

limit_req_zone $binary_remote_addr zone=req_name:10m rate=5r/s;
limit_req zone=req_limit_zone burst=3 delay=2;
limit_req_status 503;

实际配置指引:

找到Nginx配置文件nginx.conf,一般都在/usr/local/nginx/conf文件夹下(不同系统可能位置不一样)。

将下面的指令添加进去,允许每个IP每秒1次请求。

limit_req_zone $binary_remote_addr zone=req_limit_zone:10m rate=10r/s;

如果同服务器的所有网站都有效,直接在这个Nginx配置文件nginx.conf添加如下指令:

limit_req zone=req_limit_zone burst=10 nodelay;
limit_req_status 444;

如果希望设置某一个站点,将上述指令写入和网站相对应的conf配置文件中(通常在nginx/conf/vhost文件夹下)。

以上就是配置limit_req_zone,Linux限制并发请求和阻止高频访问或采集的有效方法。

本文版权所有,转载须注明:来源  https://www.qvdv.net/doc-905.html