如何利用nginx模块对DDOS和CC进行防御

           NGINX速率限止是一个很重要的流量监控功能模块,用于限止单位时间的post请求数。利用合理高效地设置,指定用户端对某1个url的浏览次数次数能够获得高效地限止,进而能够高效地缓解爆力密码破解攻击,还能够高效缓解DDOS攻击的毁灭性,还能够避免 上下游服务器被很多高并发的post请求耗光网络资源。

outputo-20210917-085613-750-wdyf.png

这篇内容咱们就限速功能的机理和程序代码开展分析,进而能够更好的了解和应用限速功能。漏桶(LeakyBucket)优化算法和令牌桶(TokenBucket)优化算法被普遍应用于通讯行业开展数据流量整形和速率控制。NGINX选用的是漏桶(LeakyBucket)优化算法来完成速率控制。漏桶(LeakyBucket)优化算法构思非常简单。我们可以把用户post请求比成水先进到到漏桶里,漏桶以相应的速率出水量(解决post请求),当水注入速率过大会立即外溢(浏览次数超出接口响应速率),随后就连接被重置。能够看得出漏桶优化算法能强制限止数据信息的传输速率。当1个post请求抵达系统之后,测算从上一次解决post请求到现在截止这段时间总共能够解决多少个post请求。随后再测算系统当今没有处理post请求数量为是多少。假如没有处理的post请求数量低于bucket大小,表明能够再次解决当今post请求。相反,要把当今post请求丢掉掉。NGINX利用limit_req_stage和limit_req2条命令来完成速率限止。命令limit_req_stage界定了限速的主要参数,命令limit_req在所处的location也就能界定的速率。主要参数key界定了根据怎样的主要参数开展速率控制。例如接下来的事例中的$binary_remote_addr便是表明应用用户端的ip详细地址(remote_addr)开展速率控制。并且为了更好地节约储存空间选用了2进制的表明方法。

主要参数stage界定一块儿发送缓冲区地区。这片发送缓冲区用于储存每一个ip详细地址的情况及其每一个ip浏览指定网页地址的次数。由于选用了发送缓冲区的方法(有关NGINX发送缓冲区能够参照本文),因此,这种数据能够被全部的yarn进程同用。利用此参数能够界定发送缓冲区的名称和尺寸。命令limit_req利用这一发送缓冲区的名称来对某1个url开展速率控制。针对zone的大小,通常是每1M尺寸的空间能够储存16K不一样用户的情况数据。

分享: