Miklix

Cómo configurar grupos PHP-FPM separados en NGINX

Publicado: 15 de febrero de 2025, 11:49:30 UTC
Última actualización: 12 de enero de 2026, 8:29:55 UTC

En este artículo, repaso los pasos de configuración necesarios para ejecutar múltiples grupos PHP-FPM y conectar NGINX a ellos a través de FastCGI, lo que permite la separación y el aislamiento de procesos entre hosts virtuales.


Esta página ha sido traducida automáticamente del inglés para hacerla accesible al mayor número de personas posible. Lamentablemente, la traducción automática no es todavía una tecnología perfeccionada, por lo que pueden producirse errores. Si lo prefiere, puede consultar la versión original en inglés aquí:

How to Set Up Separate PHP-FPM Pools in NGINX

La información de esta publicación se basa en NGINX 1.4.6 y PHP-FPM 5.5.9 ejecutándose en Ubuntu Server 14.04 x64. Puede que sea válida para otras versiones. (Actualización: Confirmo que, a partir de Ubuntu Server 24.04, PHP-FPM 8.3 y NGINX 1.24.0, todas las instrucciones de esta publicación siguen funcionando).

Configurar varios grupos de procesos secundarios PHP-FPM ofrece varias ventajas en lugar de ejecutar todo en el mismo grupo. Entre las principales se encuentran la seguridad, la separación/aislamiento y la gestión de recursos.

Sea cual sea tu motivación, este post te ayudará a lograrlo :-)

Parte 1: Configurar un nuevo pool PHP-FPM

Primero, necesitas localizar el directorio donde PHP-FPM almacena las configuraciones del pool. En Ubuntu 14.04, este es /etc/php5/fpm/pool.d por defecto. Probablemente ya exista un archivo llamado www.conf, que contiene la configuración del pool predeterminado. Si no has consultado ese archivo antes, probablemente deberías revisarlo y ajustar la configuración para tu configuración, ya que los valores predeterminados son para un servidor con poca potencia. Por ahora, simplemente haz una copia para no tener que empezar desde cero:

sudo cp www.conf mypool.conf

Por supuesto, reemplaza “mypool” con el nombre que quieras que se le dé a tu pool.

Ahora abra el nuevo archivo con nano o el editor de texto que prefiera y ajústelo para que se ajuste a sus necesidades. Probablemente quiera ajustar la cantidad de procesos secundarios y posiblemente el usuario y grupo bajo el que se ejecuta el grupo, pero los dos ajustes que debe cambiar son el nombre del grupo y el socket al que escucha; de lo contrario, entrará en conflicto con el grupo existente y dejará de funcionar.

El nombre del pool se encuentra casi al principio del archivo, entre corchetes. Por defecto, es [www]. Cámbialo como prefieras; te sugiero que uses el mismo nombre que el del archivo de configuración, así que, para este ejemplo, cámbialo a [mypool]. Si no lo cambias, parece que PHP-FPM solo cargará el primer archivo de configuración con ese nombre, lo que probablemente genere problemas.

A continuación, debe cambiar el socket o la dirección que está escuchando, definidos por la directiva listen. Por defecto, PHP-FPM usa sockets Unix, por lo que su directiva listen probablemente se verá así:

listen = /var/run/php5-fpm.sock

Puedes cambiarlo a cualquier nombre válido que desees, pero nuevamente, te sugiero que te quedes con algo similar al nombre del archivo de configuración, por lo que podrías, por ejemplo, configurarlo como:

listen = /var/run/php5-fpm-mypool.sock

Muy bien, guarde el archivo y salga del editor de texto.

Parte 2: Actualizar la configuración del host virtual NGINX

Ahora debe abrir el archivo de host virtual NGINX con la configuración FastCGI que desea cambiar a un nuevo grupo, o mejor dicho, conectarse al nuevo socket.

Por defecto en Ubuntu 14.04, estos se almacenan en /etc/nginx/sites-available, pero también se pueden definir en otro lugar. Probablemente ya sepas dónde se encuentran tus configuraciones de host virtual ;-)

Abra el archivo de configuración correspondiente en su editor de texto favorito y busque la directiva fastcgi_pass (que debe estar en un contexto de ubicación) que define el socket PHP-FPM. Debe cambiar este valor para que coincida con la nueva configuración del grupo PHP-FPM que realizó en el paso 1. Siguiendo con nuestro ejemplo, cámbielo a:

Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;

Luego, guarda y cierra ese archivo también. Ya casi terminas.

Parte 3: Reiniciar PHP-FPM y NGINX

Para aplicar los cambios de configuración, reinicie PHP-FPM y NGINX. Puede que sea suficiente con recargar en lugar de reiniciar, pero me parece que es un poco impredecible, dependiendo de la configuración modificada. En este caso, quería que los procesos secundarios antiguos de PHP-FPM se cerraran de inmediato, por lo que fue necesario reiniciar PHP-FPM; sin embargo, para NGINX, recargar podría ser suficiente. Pruébelo usted mismo.

sudo service php5-fpm restart
sudo service nginx restart

Y listo, ya está. Si hiciste todo correctamente, el host virtual que modificaste debería usar el nuevo pool PHP-FPM y no compartir procesos secundarios con otros hosts virtuales.

Compartir en BlueskyCompartir en FacebookCompartir en LinkedInCompartir en TumblrCompartir en XCompartir en LinkedInPin en Pinterest

Mikkel Christensen

Sobre el autor

Mikkel Christensen
Mikkel es el creador y propietario de miklix.com. Tiene más de 20 años de experiencia como programador informático profesional y desarrollador de software, y actualmente trabaja a tiempo completo para una gran empresa europea de TI. Cuando no está escribiendo en su blog, dedica su tiempo libre a una gran variedad de intereses, aficiones y actividades, que en cierta medida pueden verse reflejados en la variedad de temas tratados en este sitio web.