在 Ubuntu 下,您可以使用 PHP-FPM 的内置速率限制功能来限制请求速率。这可以通过在 php-fpm 配置文件中设置 request_slowlog_timeout 和 slowlog_token 参数来实现。以下是如何进行操作的步骤:
/etc/php/版本号/fpm/pool.d/www.conf。例如,如果您使用的是 PHP 7.4,则配置文件路径为 /etc/php/7.4/fpm/pool.d/www.conf。使用文本编辑器打开它,如 nano 或 vim:sudo nano /etc/php/7.4/fpm/pool.d/www.conf
;request_slowlog_timeout = 0
;slowlog_token = "<REQUEST>"
request_slowlog_timeout 设置为一个正整数,以秒为单位。这将定义一个请求在被认为是慢速之前可以运行的最长时间。例如,如果您希望限制请求速率为每秒 5 个请求,可以将此值设置为 0.2 秒:request_slowlog_timeout = 0.2
slowlog_token 设置为一个唯一的字符串,用于在慢日志中标识请求。例如:slowlog_token = "<REQUEST>"
保存并关闭配置文件。
重启 PHP-FPM 服务以使更改生效:
sudo systemctl restart php7.4-fpm
请注意,将 php7.4-fpm 替换为您正在使用的 PHP 版本。
现在,PHP-FPM 将记录超过指定速率限制的请求。您可以通过查看慢日志文件来检查这些请求。慢日志文件通常位于 /var/log/php7.4-fpm.log。例如,对于 PHP 7.4:
tail -f /var/log/php7.4-fpm.log
这将显示实时更新的慢日志条目。您可以根据需要调整 request_slowlog_timeout 和 slowlog_token 参数,以便更好地满足您的需求。