是否可以限制对 Apache 的并发请求数并缓冲多余的请求(而不是返回 503)?

是否可以限制对 Apache 的并发请求数并缓冲多余的请求(而不是返回 503)?

我有一个使用 Apache 2.4 和 PHP-FPM 的网站。有些页面需要几秒钟才能生成。有时,一些机器人或爬虫会尝试一次下载大量这些页面,所有请求都会生成 PHP 进程,服务器会因为内存不足而变得非常慢。

我可以限制 PHP 进程数或并发连接数(甚至可以使用 mod_qos 限制来自单个 IP 的并发连接数),但之后的请求(或至少来自该 IP 的进一步请求)会立即得到 503 结果。是否可以将多余的请求保留在积压中,并在先前的请求完成后再处理它们?

答案1

安装 Nginx 作为反向代理并在那里应用速率限制,按照本手册所述:https://www.nginx.com/blog/rate-limiting-nginx/

我不想复制该页面上描述的所有功能,还有很多,你最好自己读一下。这是官方博客页面,所以不太可能消失。

相关内容