根据 IP 限制或忽略请求

根据 IP 限制或忽略请求

有什么可以设置 Apache 限制规则的吗?暂时地或者忽略每秒发出 X 个请求的任何 IP 地址?

如果有 Apache 模块可以实现这一点就太好了。我查看了mod_bandwidthmod_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选项来确保用户不会因这种行为而被阻止。

相关内容