我按照中的说明安装了mod_evasivehttps://www.atlantic.net/vps-hosting/how-to-install-and-configure-modevasive-with-apache-on-ubuntu-18-04/但配置如下:
DOSHashTableSize 3097
DOSPageCount 1
DOSSiteCount 10
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
但是当我运行perl脚本时,我没有看到IP被列入黑名单,所有请求都得到了200 ok的响应,而我预计403 Forbidden:(
我做错了什么??
附加细节:当我重新启动Apache时,我看到它的6个实例。当我运行测试perl脚本时,立即检查Apache实例的数量。我看到30个实例的计数,过一段时间就会降到10个。
我的Apache配置如下:
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
我的mpm_prefork_module配置如下所示:
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 80
MaxConnectionsPerChild 1
这是Apache配置的问题吗??
问题不在于mod_evasive
或其配置本身。
在我的情况下,我不得不调整mpm_prefork_module
的配置,如下所示,以使mod_evasive配置发挥作用:
StartServers 10
MinSpareServers 10
MaxSpareServers 10
MaxRequestWorkers 80
MaxConnectionsPerChild 0
通过设置StartServers = MinSpareServers = MaxSpareServers = {your_magic_number}
和MaxConnectionsPerChild=0
,基本上将服务器数量固定为常量,这样就不会产生新的服务器进程,也不会发生连接的重新循环,从而允许Child保持无限多的并发连接。
我花了一天的时间来修复这个问题,希望这个答案有了公式,你不会浪费你的一天:(