如何配置 mod_evasive 以显示 HTTP 状态 429 而不是 403?

如何配置 mod_evasive 以显示 HTTP 状态 429 而不是 403?

有些搜索引擎蜘蛛(例如 Bingbot)爬行速度过快,似乎不遵守 robots.txtcrawl-delay指令。这会触发 DOS 防御机制,从而mod_evasive生成 HTTP 403 禁止错误。但向机器人显示完全有效的页面的 403 错误并不理想,可能会影响页面排名。有没有办法配置mod_evasive显示 HTTP 状态 429 而不是 403?

429 请求过多

429 状态代码表示用户在给定的时间内发送了太多请求(“速率限制”)。

响应表示应该包括解释条件的详细信息,并且可以包含 Retry-After 标头,指示在发出新请求之前要等待多长时间。

答案1

基本上,您只需将 mod_evasive20.c 中的 HTTP_FORBIDDEN 更改为 HTTP_TOO_MANY_REQUESTS,然后再次编译。

答案2

我分叉了 mod_evasive,并使响应状态可配置(以及一些其他功能),请查看:https://github.com/jvdmr/mod_evasive

要配置此功能,请安装新版本并添加DOSHTTPStatus 429到您的配置中(全局或您想要保护的虚拟主机)。

相关内容