PHP Academy · Lezione

Configurazione di Nginx e PHP-FPM

Configurare Nginx come reverse proxy per PHP-FPM per servire applicazioni PHP.

Lezione 1 di 413 passaggi

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 leaks

Socket 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-renewal

Compressione 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?

Gratis per iniziare

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

  1. Configurazione di Nginx e PHP-FPM
  2. Variabili d'ambiente e file .env
  3. Deploy con GitHub Actions
  4. Containerizzazione di un'applicazione PHP
← Torna a PHP Academy