Apache mod QOS 阻止了所有用户,而它应该只阻止每个 IP

Apache mod QOS 阻止了所有用户,而它应该只阻止每个 IP

我在 Ubuntu 上运行 Apache Web 服务器。我试图减少由于机器人流量过大而导致的服务器负载。因此,我尝试使用 Apache 的 mod QOS (http://mod-qos.sourceforge.net/index.html) 为激进用户创建速率限制器。

我已经用这个配置它了:

<IfModule mod_qos.c>
    SetEnvIf Request_URI ^/ LimitHits
    QS_ClientEventLimitCount 100 100 LimitHits
    QS_ErrorResponseCode  429
</IfModule>

如果用户在 100 秒内发出的请求超过 100 个,则会阻止该用户。

但问题是,由于某些未知原因,这种配置会阻止全部当任何用户越过阈值时,用户。

这很奇怪,因为文档中显示这个特定变量与请求者的 IP 绑定,这正是我想要做的。

QS_ClientEventLimitCount:定义在定义的时间内(默认为 600 秒)允许的最大请求数,其中设置了定义的环境变量(默认为 QS_Limit)。来自达到此限制的客户端 IP 的请求将在指定时间内被拒绝(在请求级别被阻止)。

访问日志确实显示了每个请求的客户端 IP,所以我知道这些 IP 正在传输到 Apache。

我如何获取变量QS_客户端事件限制计数按照预期运行并且只计算请求数并根据每个 IP 进行阻止?

相关内容