Miklix

Come impostare pool PHP-FPM separati in NGINX

Pubblicato: 15 febbraio 2025 alle ore 11:52:33 UTC
Ultimo aggiornamento: 12 gennaio 2026 alle ore 08:29:59 UTC

In questo articolo, esaminerò i passaggi di configurazione necessari per eseguire più pool PHP-FPM e connettere NGINX ad essi tramite FastCGI, consentendo la separazione dei processi e l'isolamento tra host virtuali.


Questa pagina è stata tradotta automaticamente dall'inglese per renderla accessibile al maggior numero di persone possibile. Purtroppo, la traduzione automatica non è ancora una tecnologia perfezionata, quindi possono verificarsi degli errori. Se preferite, potete consultare la versione originale in inglese qui:

How to Set Up Separate PHP-FPM Pools in NGINX

Le informazioni contenute in questo post si basano su NGINX 1.4.6 e PHP-FPM 5.5.9 in esecuzione su Ubuntu Server 14.04 x64. Potrebbero essere valide anche per altre versioni. (Aggiornamento: posso confermare che, a partire da Ubuntu Server 24.04, PHP-FPM 8.3 e NGINX 1.24.0, tutte le istruzioni contenute in questo post funzionano ancora)

Esistono numerosi vantaggi nell'impostare più pool di processi figlio PHP-FPM anziché eseguirli tutti nello stesso pool. Tra i principali, la sicurezza, la separazione/isolamento e la gestione delle risorse.

Qualunque sia la tua motivazione, questo post ti aiuterà a farlo :-)

Parte 1 – Impostare un nuovo pool PHP-FPM

Per prima cosa, devi individuare la directory in cui PHP-FPM memorizza le configurazioni del pool. Su Ubuntu 14.04, questa è /etc/php5/fpm/pool.d di default. Probabilmente lì è già presente un file chiamato www.conf, che contiene la configurazione del pool predefinito. Se non hai mai consultato quel file prima, probabilmente dovresti esaminarlo e modificarne le impostazioni per la tua configurazione, poiché le impostazioni predefinite sono per un server piuttosto poco potente, ma per ora basta farne una copia in modo da non dover ricominciare da zero:

sudo cp www.conf mypool.conf

Naturalmente, sostituisci "mypool" con il nome che preferisci per la tua piscina.

Ora apri il nuovo file usando nano o qualsiasi altro editor di testo tu preferisca e modificalo in base alle tue esigenze. Probabilmente vorrai modificare i numeri dei processi figlio e, eventualmente, l'utente e il gruppo sotto cui gira il pool, ma le due impostazioni che devi assolutamente modificare sono il nome del pool e il socket su cui è in ascolto, altrimenti entrerà in conflitto con il pool esistente e tutto smetterà di funzionare.

Il nome del pool si trova all'inizio del file, racchiuso tra parentesi quadre. Di default è [www]. Modificatelo con il nome che preferite; vi suggerisco lo stesso nome che avete dato al file di configurazione, quindi, per questo esempio, cambiatelo in [mypool]. Se non lo modificate, sembra che PHP-FPM caricherà solo il primo file di configurazione con quel nome, il che potrebbe causare problemi.

È quindi necessario modificare il socket o l'indirizzo su cui si è in ascolto, definito dalla direttiva listen. Per impostazione predefinita, PHP-FPM utilizza socket Unix, quindi la direttiva listen avrà probabilmente questo aspetto:

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

Puoi modificarlo con qualsiasi nome valido tu voglia, ma, ripeto, ti consiglio di attenerti a qualcosa di simile al nome del file di configurazione, quindi potresti ad esempio impostarlo come:

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

Bene, allora salva il file ed esci dall'editor di testo.

Parte 2 – Aggiornare la configurazione dell'host virtuale NGINX

Ora è necessario aprire il file host virtuale NGINX con la configurazione FastCGI che si desidera modificare in un nuovo pool, o meglio, connettersi al nuovo socket.

Di default su Ubuntu 14.04, questi sono salvati in /etc/nginx/sites-available, ma possono essere definiti anche altrove. Probabilmente è meglio sapere dove si trovano le configurazioni dei tuoi host virtuali ;-)

Apri il file di configurazione pertinente nel tuo editor di testo preferito e cerca la direttiva fastcgi_pass (che deve essere in un contesto di posizione) che definisce il socket PHP-FPM. Devi modificare questo valore in modo che corrisponda alla nuova configurazione del pool PHP-FPM creata nel passaggio 1, quindi, continuando con il nostro esempio, dovresti modificarlo in:

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

Quindi salva e chiudi anche quel file. Hai quasi finito.

Parte 3 – Riavviare PHP-FPM e NGINX

Per applicare le modifiche di configurazione apportate, riavviate sia PHP-FPM che NGINX. Potrebbe essere sufficiente ricaricare anziché riavviare, ma trovo che sia un metodo un po' imprevedibile, a seconda delle impostazioni modificate. Nel caso specifico, volevo che i vecchi processi figlio di PHP-FPM terminassero immediatamente, quindi era necessario riavviare PHP-FPM, ma per NGINX un ricaricamento potrebbe essere sufficiente. Provatelo voi stessi.

sudo service php5-fpm restart
sudo service nginx restart

Et voilà, il gioco è fatto. Se hai fatto tutto correttamente, l'host virtuale che hai modificato dovrebbe ora utilizzare il nuovo pool PHP-FPM e non condividere processi figlio con altri host virtuali.

Condividi su BlueskyCondividi su FacebookCondividi su LinkedInCondividi su TumblrCondividi su XCondividi su LinkedInAggiungi su Pinterest

Mikkel Christensen

Sull'autore

Mikkel Christensen
Mikkel è il creatore e proprietario di miklix.com. Ha oltre 20 anni di esperienza come programmatore di computer/sviluppatore di software ed è attualmente impiegato a tempo pieno in una grande azienda IT europea. Quando non scrive sul blog, dedica il suo tempo libero a una vasta gamma di interessi, hobby e attività, che in qualche modo si riflettono nella varietà di argomenti trattati in questo sito.