Configurazione di Nginx e PHP-FPM
Configurare Nginx come reverse proxy per PHP-FPM per servire applicazioni PHP.
Configurazione di Nginx e PHP-FPM è una lezione PHP Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento PHP Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso PHP Academy include 4 lezioni in totale.
Perché Nginx + PHP-FPM?
Nginx è un server web e reverse proxy ad alte prestazioni. PHP-FPM (FastCGI Process Manager) gestisce un pool di processi worker PHP. Nginx inoltra le richieste PHP a FPM tramite FastCGI.
Blocco server Nginx di base
Una configurazione Nginx minima per un'applicazione PHP.
# /etc/nginx/sites-available/myapp
server {
listen 80;
server_name example.com;
root /srv/myapp/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}Direttiva try_files
try_files $uri $uri/ /index.php?$query_string tenta innanzitutto di servire un file statico. Se non lo trova, ripiega su index.php, abilitando il routing tramite front controller (Laravel, Symfony).
Configurazione del pool PHP-FPM
Configurate il pool di worker in /etc/php/8.3/fpm/pool.d/www.conf.
[www]
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pm.max_requests = 500 ; recycle workers to prevent leaksSocket Unix o TCP
L'utilizzo di un socket Unix (fastcgi_pass unix:/run/php/php8.3-fpm.sock) è più veloce del protocollo TCP (127.0.0.1:9000) per la comunicazione sulla stessa macchina.
HTTPS con Let's Encrypt
Utilizzate Certbot per ottenere certificati TLS gratuiti.
$ certbot --nginx -d example.com
# Certbot modifies your Nginx config and sets up auto-renewalCompressione Gzip
Abilitate gzip per ridurre le dimensioni delle risposte.
# nginx.conf or server block:
gzip on;
gzip_types text/plain text/css application/javascript application/json;
gzip_min_length 1024;Caching del browser per le risorse statiche
Aggiungete intestazioni cache-control per i file statici.
location ~* \.(js|css|png|jpg|gif|ico|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}Limitazione della frequenza in Nginx
Limitate le richieste per indirizzo IP utilizzando il modulo limit_req: è la prima linea di difesa, prima ancora che PHP venga avviato.
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
}
server {
location /api/ {
limit_req zone=one burst=20 nodelay;
}
}Intestazioni di sicurezza
Aggiungete intestazioni di sicurezza a tutte le risposte.
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";Ricaricamento o riavvio
Dopo aver modificato la configurazione di Nginx, eseguite un ricaricamento graduale, senza tempi di inattività: nginx -t && nginx -s reload. Dopo aver modificato la configurazione di PHP-FPM: systemctl reload php8.3-fpm.
Riepilogo
Configurate Nginx con un blocco server che punti a public/index.php tramite FastCGI. Ottimizzate le impostazioni del pool PHP-FPM. Utilizzate socket Unix. Abilitate HTTPS, gzip e la memorizzazione nella cache dei file statici.
Verifica rapida
Che cosa fa try_files $uri $uri/ /index.php?$query_string?
Impara PHP con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 49
- Lezioni
- 195
Domande Frequenti
La lezione «Configurazione di Nginx e PHP-FPM» è gratuita?
Sì — il testo completo di «Configurazione di Nginx e PHP-FPM» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso PHP Academy, passa a CoddyKit PRO. Il corso PHP Academy include 4 lezioni in totale.
Cosa imparerò in «Configurazione di Nginx e PHP-FPM»?
Configurare Nginx come reverse proxy per PHP-FPM per servire applicazioni PHP. Eserciti PHP Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare PHP Academy?
Non è richiesta alcuna esperienza precedente. PHP Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Configurazione di Nginx e PHP-FPM»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione PHP Academy?
Sì. Ogni lezione PHP Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Configurazione di Nginx e PHP-FPM
- Variabili d'ambiente e file .env
- Deploy con GitHub Actions
- Containerizzazione di un'applicazione PHP