当前位置:科技动态 > Nginx 限制单个 IP 的并发连接数/速度,以减慢垃圾蜘蛛爬虫收集速度

Nginx 限制单个 IP 的并发连接数/速度,以减慢垃圾蜘蛛爬虫收集速度

  • 发布:2023-10-08 23:31

您可以使用 Nginx 限制单个 IP 的并发连接数,以减少一些收集程序或 DDOS 攻击。明月一直不知道这一点。今天闲暇的时候研究了一下,感觉原理上还是有一定作用的。今天我把它作为自己的笔记分享出来,方便以后的部署和运维。 不知道大家有没有遇到过因为一些垃圾蜘蛛、爬虫的收集导致服务器飙升的情况。不管怎样,明月经常会遇到YandexBot、SMTBot等不必要的网络蜘蛛和爬虫的骚扰。有的甚至一天就能收集到这么多。流量达到近1G。虽然可以通过使用Fail2ban来禁止垃圾收集爬虫,保护Nginx服务器,但是这样的爬虫会不断更名,不断出现。 其实可以使用Nginx限制单个IP的并发连接数来减少一些采集程序或者DDOS攻击。明月一直不知道这一点。今天闲暇的时候研究了一下,感觉原理上还是有一定作用的。今天我把它作为自己的笔记分享出来,方便以后的部署和运维。 下面以LNMP一键安装包为例。对于其他 LNMP 软件包,请参阅其文档。 LNMP的Nginx配置中添加了一些代码,但是被注释掉了。您可以编辑 /usr/local/nginx/conf/nginx.conf 文件。 注意,以下设置需要 Nginx 版本 1.1.8 或以上版本才有效。至于旧版本我就不多说了。毕竟还用旧版本的已经很少见了! 寻找: #limit_conn_zone $binary_remote_addr zone=perip:10m; 去掉前面的#号。如果没有该行,请添加它。 limit_conn_zone $binary_remote_addr 区域=perip:10m; 默认情况下,位置如下图所示: 然后将其添加到虚拟主机配置中要设置连接数限制的服务器部分。 limit_conn perip 10; 10是单个IP​​的最大并发连接数。 限制速率 100k; limit_rate 为 100KB/秒的速度限制。​ 如下图所示,示例截图:将每个连接速度限制为 100K。这个限制是针对单线程的。比如我用IE下载的时候是100K。使用迅雷时会占用2个线程,所以迅雷下载速度为200K。如果单个IP的并发数设置为10,那么多线程下载的速度可以达到100K×10。 最后运行 /usr/local/nginx/sbin/nginx -t 测试配置是否有错误。如果没有错误,执行: /usr/local/nginx/sbin/nginx -s 重新加载 重新加载配置使其生效。 至此,Nginx就完成了对单个IP并发连接数/速度的限制,以减缓垃圾蜘蛛爬虫收集带来的服务器负载压力。当然,效果还是要看实际的数据采集情况。明月会观察一段时间。感觉原则上应该是有效的!对单个IP进行基本限制比较靠谱。毕竟网络上不守规矩的爬虫太多了。

相关文章