如何为不同域名配置独立的 PHP-FPM 进程池 pool?

文章导读
为不同域名配置独立 PHP-FPM 进程池,需要在 PHP-FPM 配置目录中为每个站点创建独立的 pool 配置文件,并在 Web 服务器中将域名请求指向对应的 socket 或端口。适用于需要隔离资源、独立设置 PHP 版本或权限的多站点环境,风险在于配置错误可能导致服务无法启动或权限拒绝。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

为不同域名配置独立 PHP-FPM 进程池,需要在 PHP-FPM 配置目录中为每个站点创建独立的 pool 配置文件,并在 Web 服务器中将域名请求指向对应的 socket 或端口。适用于需要隔离资源、独立设置 PHP 版本或权限的多站点环境,风险在于配置错误可能导致服务无法启动或权限拒绝。

先说结论:通过创建多个 pool 配置文件实现进程隔离,适合多站点资源独立管理场景

  • 适合:需要隔离用户权限、PHP 配置或内存资源的多域名环境
  • 先准备:确认 PHP-FPM 配置目录路径及当前运行用户
  • 验收:检查进程列表及 Web 服务器错误日志无权限报错

命令速用版

# 复制默认配置
cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/site1.conf
# 修改配置中的名称和监听 socket
# 在 Nginx 中指定 fastcgi_pass unix:/run/php/site1.sock

为什么会这样

PHP-FPM 支持多 pool 机制,每个 pool 可独立定义运行用户、监听地址和进程参数。Web 服务器通过不同的 socket 或端口区分请求流向,从而实现域名级的资源隔离和配置差异化。

分步处理

1. 查找配置目录:通常在 /etc/php-fpm.d/ 或 /etc/php/版本/fpm/pool.d/

如何为不同域名配置独立的 PHP-FPM 进程池 pool?

2. 创建新 pool 文件:复制 www.conf 为新文件名,如 site1.conf

3. 修改关键参数:更改 [pool] 名称、user、group 和 listen 路径

4. 重启服务:执行 systemctl restart php-fpm 加载新配置

如何为不同域名配置独立的 PHP-FPM 进程池 pool?

5. 绑定 Web 服务器:在 Nginx 或 Apache 中将特定域名指向新 socket

怎么验证是否生效

使用 ps aux | grep php-fpm 查看进程名称是否包含新 pool 名,或在站点中运行 phpinfo() 检查配置值,同时观察 Web 服务器错误日志是否有连接拒绝记录。

如何为不同域名配置独立的 PHP-FPM 进程池 pool?

常见坑

Socket 文件权限错误会导致 Web 服务器 502 报错,不同 pool 的 listen 路径不能重复,修改配置后必须重启 PHP-FPM 服务才能生效。

常见问题

不同 pool 能用不同 PHP 版本吗

可以,但需要安装多版本 PHP-FPM 并监听不同端口或 socket。

配置独立 pool 会增加内存消耗吗

会,每个 pool 都会维护独立的进程集合,基础内存占用会叠加。

参考来源

  • PHP-FPM Official Documentation - Installation Configuration: https://www.php.net/manual/en/install.fpm.configuration.php
  • Linux Distribution Manuals (Ubuntu/Debian/CentOS) - PHP-FPM Pool Configuration