Comment configurer des pools PHP-FPM séparés dans NGINX
Publié : 15 février 2025 à 11:52:29 UTC
Dernière mise à jour : 12 janvier 2026 à 08:29:57 UTC
Dans cet article, je détaille les étapes de configuration nécessaires pour exécuter plusieurs pools PHP-FPM et connecter NGINX à ces derniers via FastCGI, permettant ainsi la séparation et l'isolation des processus entre les hôtes virtuels.
How to Set Up Separate PHP-FPM Pools in NGINX
Les informations contenues dans cet article sont basées sur NGINX 1.4.6 et PHP-FPM 5.5.9 exécutés sur Ubuntu Server 14.04 x64. Leur validité pour d'autres versions n'est pas garantie. (Mise à jour : Je confirme que sur Ubuntu Server 24.04, avec PHP-FPM 8.3 et NGINX 1.24.0, toutes les instructions de cet article fonctionnent toujours.)
Il existe plusieurs avantages à configurer plusieurs pools de processus enfants PHP-FPM plutôt que d'exécuter tout dans un seul pool. La sécurité, la séparation/l'isolation et la gestion des ressources sont parmi les principaux avantages.
Quelle que soit votre motivation, cet article vous aidera à y parvenir :-)
Partie 1 – Configurer un nouveau pool PHP-FPM
Tout d'abord, vous devez localiser le répertoire où PHP-FPM stocke ses configurations de pool. Sous Ubuntu 14.04, il s'agit par défaut de `/etc/php5/fpm/pool.d`. Un fichier nommé `www.conf`, contenant la configuration du pool par défaut, s'y trouve probablement déjà. Si vous n'avez jamais consulté ce fichier, il est conseillé de le faire et d'adapter ses paramètres à votre configuration, car les valeurs par défaut sont conçues pour un serveur peu puissant. Pour l'instant, faites-en simplement une copie afin de ne pas avoir à tout recommencer.
Bien sûr, remplacez « mypool » par le nom que vous souhaitez donner à votre piscine.
Ouvrez maintenant le nouveau fichier avec nano ou tout autre éditeur de texte de votre choix et personnalisez-le selon vos besoins. Vous souhaiterez probablement ajuster le nombre de processus enfants et éventuellement l'utilisateur et le groupe sous lesquels le pool s'exécute. Cependant, les deux paramètres que vous devez absolument modifier sont le nom du pool et le socket sur lequel il écoute, faute de quoi il entrera en conflit avec le pool existant et le système cessera de fonctionner.
Le nom du pool se trouve en haut du fichier, entre crochets. Par défaut, il s'agit de [www]. Modifiez-le comme vous le souhaitez ; je vous suggère d'utiliser le même nom que celui de votre fichier de configuration, par exemple [mypool]. Si vous ne le modifiez pas, PHP-FPM ne chargera que le premier fichier de configuration portant ce nom, ce qui risque de provoquer des dysfonctionnements.
Vous devez ensuite modifier le socket ou l'adresse d'écoute, définie par la directive `listen`. Par défaut, PHP-FPM utilise des sockets Unix ; votre directive `listen` ressemblera donc probablement à ceci :
Vous pouvez le modifier et lui choisir n'importe quel nom valide, mais je vous suggère de rester fidèle au nom du fichier de configuration. Vous pourriez par exemple le définir sur :
Très bien, enregistrez le fichier et quittez l'éditeur de texte.
Partie 2 – Mise à jour de la configuration de l'hôte virtuel NGINX
Vous devez maintenant ouvrir le fichier hôte virtuel NGINX contenant la configuration FastCGI que vous souhaitez modifier pour un nouveau pool – ou plutôt, vous connecter au nouveau socket.
Par défaut, sous Ubuntu 14.04, ces fichiers sont stockés dans le répertoire `/etc/nginx/sites-available`, mais ils peuvent également être définis ailleurs. Vous savez probablement mieux que quiconque où se trouvent les configurations de vos hôtes virtuels ;-)
Ouvrez le fichier de configuration correspondant dans votre éditeur de texte préféré et recherchez la directive `fastcgi_pass` (qui doit se trouver dans un contexte `location`) définissant le socket PHP-FPM. Vous devez modifier cette valeur pour qu'elle corresponde à la nouvelle configuration du pool PHP-FPM que vous avez créée à l'étape 1. Dans notre exemple, vous la modifieriez donc comme suit :
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Ensuite, enregistrez et fermez ce fichier. Vous avez presque terminé.
Partie 3 – Redémarrage de PHP-FPM et NGINX
Pour appliquer les modifications de configuration que vous avez effectuées, redémarrez PHP-FPM et NGINX. Un simple rechargement peut suffire, mais le résultat est aléatoire et dépend des paramètres modifiés. Dans mon cas précis, je souhaitais que les anciens processus enfants de PHP-FPM s'arrêtent immédiatement ; un redémarrage de PHP-FPM était donc nécessaire. En revanche, pour NGINX, un rechargement peut suffire. Faites le test vous-même.
sudo service nginx restart
Et voilà, c'est terminé. Si vous avez tout fait correctement, l'hôte virtuel que vous avez modifié devrait maintenant utiliser le nouveau pool PHP-FPM et ne pas partager les processus enfants avec d'autres hôtes virtuels.
