In breve
Con PHP-FPM il collo di bottiglia raramente è il web server: sono PHP e il database. Scegli Apache se l'applicazione si basa su .htaccess o se il tuo team conosce Apache. Scegli nginx se configuri tutto centralmente, servi molti file statici o usi già nginx come proxy.
| Criterio | nginx | Apache |
|---|---|---|
| Collegamento a PHP | fastcgi_pass verso socket o porta di PHP-FPM | mod_proxy_fcgi con MPM event, oppure mod_php |
| .htaccess | Non supportato, le regole vanno nella configurazione del server | Supportato, le applicazioni portano le loro regole |
| Stile di configurazione | Centralizzato, compatto, blocchi location | Centrale più distribuito via .htaccess, molti moduli |
| Limite upload | client_max_body_size | LimitRequestBody |
| Timeout verso PHP | fastcgi_read_timeout | ProxyTimeout o Timeout |
| File statici | Molto leggero sulle risorse | Buono, efficiente anche con MPM event |
| Documentazione del produttore | Presente per Nextcloud e molte app, ma le regole devono combaciare esattamente | Spesso è il setup di riferimento dell'applicazione |
| Test configurazione | nginx -t | apachectl configtest |
Scegli nginx se …
- nginx gira già come reverse proxy o terminazione TLS per altri servizi.
- vuoi tutte le regole centralizzate e versionate nella configurazione del server.
- servi molti file statici o gestisci molte connessioni simultanee.
- utenti o plugin non devono poter cambiare regole del web server via .htaccess.
Scegli Apache se …
- l'applicazione porta e aggiorna regole
.htaccess, come i plugin WordPress o Nextcloud. - gestisci setup tipo hosting condiviso con clienti che hanno bisogno di regole proprie.
- il team conosce Apache e non ha tempo per una migrazione.
- vuoi usare moduli come
mod_auth_mellonomod_auth_openidc.
Insidie dal lavoro quotidiano
- 502 Bad Gateway dopo un aggiornamento: il socket di PHP-FPM ha cambiato percorso o permessi. Confronta il percorso nel web server e nella configurazione del pool.
- L'upload si interrompe anche se hai modificato PHP: il limite nel web server o nel proxy davanti è ancora basso.
- 504 Gateway Timeout su operazioni lunghe: il timeout del web server è più corto di
max_execution_timeorequest_terminate_timeoutin PHP-FPM. - Passando da Apache a nginx spariscono le regole di protezione di .htaccess. Verifica che cartelle come
data/oconfig/non siano raggiungibili via HTTP.
Domande frequenti
nginx è più veloce di Apache?
Con file statici e molte connessioni aperte nginx di solito consuma meno. Per applicazioni PHP dietro PHP-FPM però i tempi di risposta dipendono quasi sempre da PHP, cache e database, non dal web server.
Posso combinarli?
Sì, è comune avere nginx davanti come reverse proxy TLS e Apache dietro. Funziona, ma raddoppia timeout, limiti di upload e log da controllare quando qualcosa si rompe.