`

Module ngx_http_limit_req_module

 
阅读更多
The ngx_http_limit_req_module module (0.7.21) is used to limit the request processing rate per a defined key, in particular, the processing rate of requests coming from a single IP address. The limitation is done using the “leaky bucket” method.

Example Configuration

引用
http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

    ...

    server {

        ...

        location /search/ {
            limit_req zone=one burst=5;
        }


参考Nginx官网:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_zone


百度蜘蛛抓取量骤增,导致服务器负载很高。最终用nginx的ngx_http_limit_req_module模块限制了百度蜘蛛的抓取频率。每分钟允许百度蜘蛛抓取200次,多余的抓取请求返回503。
nginx的配置:
#全局配置
limit_req_zone $anti_spider zone=anti_spider:60m rate=200r/m;
#某个server中
limit_req zone=anti_spider burst=5 nodelay;
if ($http_user_agent ~* "baiduspider") {
set $anti_spider $http_user_agent;
}

参数说明:
指令limit_req_zone 中的rate=200r/m 表示每分钟只能处理200个请求。
指令limit_req 中的burst=5 表示最大并发为5。即同一时间只能同时处理5个请求。
指令limit_req 中的 nodelay 表示当已经达到burst值时,再来新请求时,直接返回503
IF部分用于判断是否是百度蜘蛛的user agent。如果是,就对变量$anti_spider赋值。这样就做到了只对百度蜘蛛进行限制了。
详细的参数说明,可以查看官方文档。
http://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_zone

这个模块对请求的限制采用了漏桶算法。
漏桶算法详见 http://baike.baidu.com/view/2054741.htm
相关代码请查看nginx源码文件 src/http/modules/ngx_http_limit_req_module.c
代码的核心部分是ngx_http_limit_req_lookup 方法。
参考:http://www.bo56.com/%E4%BD%BF%E7%94%A8nginx%E9%99%90%E5%88%B6%E7%99%BE%E5%BA%A6%E8%9C%98%E8%9B%9B%E7%9A%84%E9%A2%91%E7%B9%81%E6%8A%93%E5%8F%96/
分享到:
评论

相关推荐

    ngx_dynamic_limit_req_module:ngx_dynamic_limit_req_module模块用于动态锁定IP并定期释放它

    ngx_dynamic_limit_req_module 介绍 ngx_dynamic_limit_req_module模块用于动态锁定IP并定期释放它。 目录 dynamic_limit_req_zone 设置共享内存区域的参数,该参数将保留各种键的状态。 特别是,状态存储当前的...

    nginx-1.24.0-2.el7.x86-64.rpm

    、limit_conn_module、ngx_http_limit_req_module、ngx_http_access_module、ngx_http_auth_basic_module、ngx_http_fastcgi_module、ngx_http_gzip_module、ngx_http_proxy_module、ngx_http_upstream_module、ngx_...

    nginx官方文档中文版

    * ngx_http_limit_req_module * ngx_http_log_module 其他模块 * ngx_http_map_module * ngx_http_memcached_module * ngx_http_mirror_module * ngx_http_mp4_module * ngx_http_perl_module * ngx_...

    Nginx使用limit_req_zone对同一IP访问进行限流的方法

    nginx可以使用ngx_http_limit_req_module模块的limit_req_zone指令进行限流访问,防止用户恶意攻击刷爆服务器。ngx_http_limit_req_module模块是nginx默认安装的,所以直接配置即可。 首先,在nginx.conf文件中的...

    Nginx限制某个IP同一时间段的访问次数和请求数示例代码

    nginx可以通过ngx_http_limit_conn_module和ngx_http_limit_req_module配置来限制ip在同一时间段的访问次数. ngx_http_limit_conn_module:该模块用于限制每个定义的密钥的连接数,特别是单个IP​​地址的连接数....

    nginx全套插件包.rar

    9. **ngx_http_limit_req_module**:限制每秒请求数,同样用于防御DDoS和恶意爬虫。 10. **ngx_http_upstream_hash_module**:基于请求的某个参数(如URL、IP)进行负载均衡,实现特定流量的定向。 11. **ngx_...

    nginx-0.8.45

    此外,配合第三方模块,如`ngx_http_realip_module`可以获取客户端的真实IP,`ngx_http_access_module`控制请求访问权限,`ngx_http_limit_conn_module`和`ngx_http_limit_req_module`限制并发连接和请求频率。...

    解读nginx中limit配置参数

    本文主要解析一下ngx_http_core_module、ngx_http_limit_conn_module以及ngx_http_limit_req_module中的limit相关配置参数。 limit_rate 名称 默认配置 作用域 官方说明 中文解读 模块 limit_rate limit_rate...

    详解Nginx 对访问量的控制

    了解 Nginx 的 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模块,对请求访问量进行控制。 Nginx 模块化 nginx 的内部结构是由核心模块和一系列的功能模块所组成。模块化架构使得每个模块的功能相对...

    nginx-1.14.2.rar

    - 社区提供许多第三方模块,如缓存模块(ngx_http_memcached_module、ngx_http_fastcgi_cache_module)、限速模块(ngx_http_limit_conn_module、ngx_http_limit_req_module)等,可根据需求选择安装。 6. **维护...

    nginx限制并发连接请求数的方法

    限制并发请求数的模块为:http_limit_req_module,地址:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html 这两个模块都是默认编译进Nginx中的。 限制并发连接数 示例配置: http { limit_conn_zone...

    详解Nginx http资源请求限制(三种方法)

    前置条件:nginx 需要有 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模块,可以使用命令 2>&1 nginx -V | tr ‘ ‘ ‘\n’|grep limit 检查有没有相应模块,如果没有请重新编译安装这两个模块。...

    nginx-1.4.2.tar.gz for linux

    - ` ngx_http_limit_conn_module` 和 `ngx_http_limit_req_module`:限制并发连接和请求速率。 7. **维护与监控** 使用Nginx的内置日志功能,结合第三方工具如`ngxtop`、`nginx-module-vts`或`goaccess`,可以...

    nginx安装包程序文件

    - **ngx_http_limit_conn_module** 和 **ngx_http_limit_req_module**:控制连接和请求限制。 - **ngx_http_proxy_module** 和 **ngx_http_upstream_module**:增强反向代理功能。 - **ngx_http_addition_module*...

    nginx(ngua).zip

    限速模块(ngx_http_limit_conn_module和ngx_http_limit_req_module)控制并发连接数和请求速率,防止DDoS攻击。 总的来说,Nginx凭借其优秀的性能和丰富的功能,在现代Web服务架构中扮演着重要角色。无论是用作...

    Nginx 如何限制访问频率,下载速率和并发连接数的方法

    ngx_http_limit_req_module :用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 “leaky bucket” ngx_http_limit_conn_module :用来限制同一时间连接数,即并发限制 limit_rate和limit_rate_after :...

    (二)秒杀基础工具与限流配置

    服务器压力检测工具ab 安装 $ yum -y install httpd-tools $ ab -V 检测接口最大QPS(每秒查询率 – 吞吐...按请求速率限速,按照ip限制单位时间内的请求数(ngx_http_limit_req_module) 限流配置 创建规则 语法 :li

Global site tag (gtag.js) - Google Analytics