使Nginx服务器响应缓慢

所以我在我的网站上有一个垃圾邮件发送者。 我可以使用'拒绝'来阻止他的IP,但是他会改变他的IP,我将不得不与他一起玩猫和老鼠。

相反,我很好奇是否有办法configurationnginx来更慢地响应他的IP。

这样,也许他会只是决定网站运作不正常,离开我一个人。

谢谢

Nginx指令limit_rate可以让你指定你想要速度限制响应的速度,例如

 location / { if ($slow) { limit_rate 4k; } } 

Nginx的文档在这里 。 (从文档中你会看到你的后端可能会做出决定,并要求Nginx限制客户端的速度)

你如何得到这个$slowvariables集取决于你的configuration。 最简单的就是通过geo映射来设置它:

 geo $slow { default 0; 1.2.3.0/24 1; } 

根据客户端IP地址,“Geo”映射是$slow的依赖关系。 默认为0,客户端IP地址在1.2.3.0/24子网中为1。 在这里查看关于“geo”的Nginx文档

使用“fail2ban”是整个解决scheme的合理发展。 您可以使用“fail2ban”自动检测exception活动并为Nginx收集IP,然后重新加载Nginx,以便重新读取需要减慢和/或阻止的IP地址列表。

如果你想欺骗有问题的用户认为他仍然不被你注意到,你可以使用nginx的请求限制模块( http://wiki.nginx.org/HttpLimitReqModule )。

首先定义一个请求限制区域:

 http { limit_req_zone $binary_remote_addr zone=spammers:1m rate=30r/m; } 

该区域将使用罪犯的IP地址,以便将请求标识为每分钟30(1/2秒)。 请注意,该区域的内存大小设置为1 MiB,这意味着它可以处理每个请求桶1个MiB / 64个字节= 16384个垃圾邮件制造者地址(这对我们来说可能是一个过度杀手)。 如果你必须分别调整。

接下来,我们定义一个指令,通过使用一个(邪恶的,不幸的)如果情况下,实际上通过限制器路线的罪犯:

 location / { if ($remote_addr = 1.2.3.4) { limit_req zone=spammer burst=5; } } 

您可以在服务器的访问日志中查看您的劳动成果。

请注意,这种攻击不能很好地扩展,因为每当攻击者改变IP时,就必须更新configuration文件(更不用说包含更多的IP地址,这意味着更多的情况下),但它是有效的。

处理这个垃圾邮件发送者的最佳方法是正确安装和configurationfail2ban。 Fail2ban将search日志文件中的模式,并阻止所有垃圾邮件您的网站。 当然,你必须configuration它来search适当的模式。