Comment configurer des pools PHP-FPM distincts dans NGINX
Publié : 15 février 2025 à 11 h 57 min 29 s UTC
Dernière mise à jour : 12 janvier 2026 à 08 h 30 min 31 s UTC
Dans cet article, j’explique les étapes de configuration nécessaires pour exécuter plusieurs pools PHP-FPM et y connecter NGINX via FastCGI, permettant ainsi la séparation des processus et l’isolement entre hôtes virtuels.
How to Set Up Separate PHP-FPM Pools in NGINX
Les informations contenues dans ce billet sont basées sur NGINX 1.4.6 et PHP-FPM 5.5.9 fonctionnant sur Ubuntu Server 14.04 x64. Cela peut être valide ou non pour d’autres versions. (Mise à jour : je peux confirmer qu’avec Ubuntu Server 24.04, PHP-FPM 8.3 et NGINX 1.24.0, toutes les instructions de ce message fonctionnent encore)
Il y a plusieurs avantages à configurer plusieurs pools de processus enfants PHP-FPM plutôt que de tout faire fonctionner dans le même pool. La sécurité, la séparation/l’isolement et la gestion des ressources me viennent à l’esprit comme quelques-uns des principaux exemples.
Peu importe ta motivation, ce billet va t’aider à y arriver :-)
Partie 1 – Mettre en place un nouveau pool PHP-FPM
D’abord, vous devez localiser le répertoire où PHP-FPM stocke ses configurations de pool. Sous Ubuntu 14.04, c’est /etc/php5/fpm/pool.d par défaut. Il y a probablement déjà un fichier là-bas appelé www.conf, qui contient la configuration du pool par défaut. Si tu n’as jamais regardé ce fichier avant, il y a de fortes chances que tu devrais le parcourir et ajuster les paramètres pour ton installation, car les paramètres par défaut sont pour un serveur assez sous-puissant, mais pour l’instant, fais-en juste une copie pour ne pas avoir à repartir de zéro :
Bien sûr, remplacez « mypool » par le nom que vous voulez donner à votre piscine.
Maintenant, ouvre le nouveau fichier en utilisant un nano ou l’éditeur de texte que tu préfères et ajuste-le selon ton usage. Vous voudrez probablement ajuster les numéros de processus enfants et possiblement l’utilisateur et le groupe sous lequel le pool fonctionne, mais les deux réglages que vous devez absolument changer sont le nom du pool et le socket qu’il écoute, sinon cela entrera en conflit avec le pool existant et tout ne fonctionnera plus.
Le nom de la piscine se trouve près du haut du dossier, entre crochets. Par défaut, c’est [www]. Changez ça comme vous voulez; Je suggère la même chose que vous avez nommée le fichier de configuration, donc pour les besoins de cet exemple, changez-le en [mypool]. Si vous ne le modifiez pas, il semble que PHP-FPM ne chargera que le premier fichier de configuration avec ce nom, ce qui risque de casser des problèmes.
Vous devez ensuite changer le socket ou l’adresse que vous écoutez, qui est défini par la directive d’écoute. Par défaut, PHP-FPM utilise des sockets Unix, donc votre directive d’écoute ressemblera probablement à ceci :
Vous pouvez le changer pour le nom valide que vous voulez, mais encore une fois, je suggère de rester avec quelque chose de similaire au nom du fichier de configuration, pour que vous puissiez par exemple le définir comme suit :
Bon, enregistre le fichier et quitte l’éditeur de texte.
Partie 2 – Mise à jour de la configuration de l’hôte virtuel NGINX
Maintenant, vous devez ouvrir le fichier hôte virtuel NGINX avec la configuration FastCGI que vous voulez changer pour un nouveau pool – ou plutôt, vous connecter au nouveau socket.
Par défaut sur Ubuntu 14.04, ceux-ci sont stockés sous /etc/nginx/sites-available, mais peuvent aussi être définis ailleurs. Tu sais probablement mieux où se trouvent tes configurations d’hôtes virtuels;-)
Ouvre le fichier de configuration pertinent dans ton éditeur de texte préféré et cherche la directive fastcgi_pass (qui doit être dans un contexte de localisation) définissant le socket PHP-FPM. Vous devez modifier cette valeur pour qu’elle corresponde à la nouvelle configuration de pool PHP-FPM que vous avez faite à l’étape un, donc en poursuivant notre exemple, vous la modifieriez ainsi ainsi :
Fastcgi_pass unix :/var/run/php5-fpm-mypool.sock;
Ensuite, sauvegarder et fermer ce fichier aussi. Tu as presque fini maintenant.
Partie 3 – Redémarrer PHP-FPM et NGINX
Pour appliquer les changements de configuration que vous avez faits, redémarrez à la fois PHP-FPM et NGINX. Ça peut suffire à recharger au lieu de redémarrer, mais je trouve que c’est un peu aléatoire, selon les réglages modifiés. Dans ce cas particulier, je voulais que les anciens processus enfants PHP-FPM meurent immédiatement, donc redémarrer PHP-FPM était nécessaire, mais pour NGINX, un rechargement peut suffire. Essaie par toi-même.
sudo service nginx restart
Et voilà, c’est fini. 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 de processus enfants avec d’autres hôtes virtuels.
