有什么可以设置 Apache 限制规则的吗?暂时地或者忽略每秒发出 X 个请求的任何 IP 地址?
如果有 Apache 模块可以实现这一点就太好了。我查看了mod_bandwidth
,mod_limitipconn
但似乎它们都是基于带宽的,我很难根据每个 IP 的请求数来确定带宽。
我很乐意使用可以在标准 Linux 服务器(Fedora 或 CentOS)上运行的 Apache 外部程序。
答案1
iptables
具有速率和连接限制模块:
iptables -I INPUT -m limit --limit X/second -p tcp --dport 80 --syn -j ACCEPT
请注意,这实际上不会限制 HTTP要求;它将限制 TCP 连接数,如果浏览器使用 keepalive,则可能与 HTTP 请求数不符。另请注意,大多数浏览器都会建立大量并行连接;您可能希望使用该--limit-burst
选项来确保用户不会因这种行为而被阻止。