有些搜索引擎蜘蛛(例如 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
到您的配置中(全局或您想要保护的虚拟主机)。