在Apache中,有没有办法限制每秒/小时/每天的新连接数?

为了澄清,我不希望限制同时连接的数量,也不想限制HTTP请求的数量。 我只想限制每个IP的NEW连接数量。

我想这样做,因为大多数Web爬虫没有保持活动的function,因此他们打开一个新的连接,每个请求。

我隐约记得阅读一个可以做到这一点的MOD,但我不记得名字。 希望这里有人能帮助我。

我不会在apache中这样做..我会用iptables在networking层做这件事。

iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 86400 --hitcount 100 -j REJECT 

将86400更改为您希望保留该块的秒数(86400为1天),100为命中计数,您准备为每个IP准许多less个。

您还可以将-j REJECT更改为-j DROP ,它定义满足条件时的数据包行为。 DROP无缝丢弃数据包, REJECT返回“端口不可达”或类似的错误。

也就是说,有一个mod_throttle会做类似的事情,但我似乎无法find关于它的许多信息。 我觉得在networking/内核级别而不是在Apache中做这种事情感觉更好。 Apache擅长处理请求。 让它做到最好,不要为了跟踪连接而加重负担。

您可以调整iptables规则,以便将超出限制的请求redirect到另一个端口(例如TCP 8080),在这个端口中,Apache的另一个实例将静态页面与您的消息一起提供给用户

我想你正在寻找mod_qos