ubuntu

PHP-FPM在Ubuntu上如何限制请求速率

小樊
40
2025-03-26 16:13:55
栏目: 编程语言

在Ubuntu上,您可以使用PHP-FPM的内置功能或第三方模块来限制请求速率。以下是两种方法:

方法1:使用PHP-FPM内置的request_slowlog_timeout参数

  1. 打开PHP-FPM配置文件。通常位于/etc/php/7.x/fpm/pool.d/www.conf(其中7.x是您的PHP版本)。使用文本编辑器打开,例如:
sudo nano /etc/php/7.x/fpm/pool.d/www.conf
  1. 在文件中找到request_slowlog_timeout参数。如果没有找到,请在[global]部分下添加它。将其值设置为您希望的毫秒数。例如,如果您希望限制请求速率为每秒10个请求,可以将其设置为1000毫秒:
request_slowlog_timeout = 1000
  1. 保存并关闭文件。

  2. 重启PHP-FPM服务以应用更改:

sudo systemctl restart php7.x-fpm

请确保将7.x替换为您的PHP版本。

方法2:使用第三方模块php-fpm-rate-limit

  1. 安装php-fpm-rate-limit模块:
sudo apt-get install php-fpm-rate-limit
  1. 创建一个新的PHP-FPM池配置文件,例如/etc/php/7.x/fpm/pool.d/ratelimit.conf(其中7.x是您的PHP版本):
sudo nano /etc/php/7.x/fpm/pool.d/ratelimit.conf
  1. 在新文件中添加以下内容,根据需要调整参数:
[global]
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

[rate-limit]
request_terminate_timeout = 1s
rl.limit = 10/r
rl.burst = 5
rl.log = /var/log/php-fpm/rate-limit.log

这里,我们将请求速率限制为每秒10个请求,允许最多5个突发请求。

  1. 保存并关闭文件。

  2. 修改主PHP-FPM配置文件/etc/php/7.x/fpm/pool.d/www.conf,将include=/etc/php/7.x/fpm/pool.d/*.conf行取消注释(如果已注释)。

  3. 重启PHP-FPM服务以应用更改:

sudo systemctl restart php7.x-fpm

请确保将7.x替换为您的PHP版本。

现在,您的PHP-FPM实例应该已经限制了请求速率。您可以通过查看/var/log/php-fpm/rate-limit.log文件来监控限制日志。

0
看了该问题的人还看了