Miklix

Cómo configurar grupos PHP-FPM separados en NGINX

Publicado: 15 de febrero de 2025, 11:49:30 UTC

En este artículo, repaso los pasos de configuración necesarios para ejecutar varios 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 ser válida o no para otras versiones. (Actualización: puedo confirmar 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)

Existen varias ventajas en configurar varios grupos de procesos secundarios PHP-FPM en lugar de ejecutar todo en el mismo grupo. La seguridad, la separación/aislamiento y la gestión de recursos son algunas de las principales.

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 sus configuraciones de pool. En Ubuntu 14.04, este es /etc/php5/fpm/pool.d por defecto. Probablemente ya exista un archivo allí llamado www.conf , que contiene la configuración para el pool predeterminado. Si no has visto ese archivo antes, es probable que debas revisarlo y ajustar las configuraciones que contiene para tu configuración, ya que los valores predeterminados son para un servidor con poca potencia, pero por ahora solo haz una copia de él para que no tengamos 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, abre el nuevo archivo con nano o cualquier editor de texto que prefieras y ajústalo para que se ajuste a tu propósito. Probablemente quieras modificar los números de procesos secundarios y posiblemente el usuario y el grupo bajo los que se ejecuta el grupo, pero las dos configuraciones que debes cambiar absolutamente son el nombre del grupo y el socket al que está escuchando, de lo contrario, entrará en conflicto con el grupo existente y las cosas dejarán de funcionar.

El nombre del pool se encuentra cerca de la parte superior del archivo, entre corchetes. De manera predeterminada, es [www] . Cámbielo por lo que desee; le sugiero que lo cambie por el mismo nombre que le dio al archivo de configuración, por lo que, para este ejemplo, cámbielo por [mypool] . Si no lo cambia, parece que PHP-FPM solo cargará el primer archivo de configuración con ese nombre, lo que probablemente estropee las cosas.

A continuación, debe cambiar el socket o la dirección que está escuchando, que se define mediante la directiva listen . De forma predeterminada, PHP-FPM utiliza 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 a:

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.

De manera predeterminada, en Ubuntu 14.04, se almacenan en /etc/nginx/sites-available, pero también se pueden definir en otro lugar. Probablemente sepas mejor dónde se encuentran las configuraciones de tu 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 uno, por lo que, siguiendo con nuestro ejemplo, cambiaría esto a:

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

Luego, guarde y cierre también ese archivo. Ya casi ha terminado.


Parte 3 – Reiniciar PHP-FPM y NGINX

Para aplicar los cambios de configuración que ha realizado, reinicie PHP-FPM y NGINX. Puede ser suficiente con volver a cargar en lugar de reiniciar , pero creo que es un poco impreciso, según qué configuración se cambie. En el caso particular, quería que los procesos secundarios antiguos de PHP-FPM murieran de inmediato, por lo que fue necesario reiniciar PHP-FPM, pero para NGINX, una recarga puede ser suficiente. Pruébelo usted mismo.

sudo service php5-fpm restart
sudo service nginx restart

Y listo, ya está. Si hizo todo correctamente, el host virtual que modificó ahora debería usar el nuevo grupo PHP-FPM y no compartir procesos secundarios con ningún otro host virtual.

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

Mikkel Bang Christensen

Sobre el autor

Mikkel Bang 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.