Generatore di Configurazione Nginx

Genera Nginx Config

Scrivere configurazioni Nginx da zero significa ricordare ogni proxy_set_header, ogni tipo MIME gzip e la differenza tra try_files $uri/ /index.php?$args e la versione che rompe sottilmente il routing. Questo generatore richiede il dominio, l’upstream, il gestore PHP e i percorsi SSL, quindi restituisce un blocco server con impostazioni predefinite sensate per TLS, HTTP/2, caching statico e compressione.

Come generare il tuo blocco server

  1. 1

    Scegli un preset

    Sito statico, PHP-FPM (Laravel, WordPress), reverse proxy Node.js, o un semplice reindirizzamento 301.

  2. 2

    Inserisci il dominio

    Includi l'elenco server_name: tipicamente varianti www e non-www.

  3. 3

    Imposta i dettagli SSL

    Punta ai tuoi file fullchain e privkey, oppure salta per usare solo HTTP.

  4. 4

    Regola l'upstream

    Porta, percorso socket, o URL backend per i casi di proxy_pass.

  5. 5

    Copia e distribuisci

    Inserisci l'output in /etc/nginx/sites-available, esegui nginx -t e ricarica.

Come appare un buon blocco server

Un host virtuale Nginx moderno di solito ha questi elementi:

Sezione Scopo
listen 443 ssl http2 Accetta HTTPS con HTTP/2 abilitato
ssl_certificate + ssl_certificate_key Punta al materiale TLS
ssl_protocols TLSv1.2 TLSv1.3 Scarta le vecchie versioni TLS
gzip on + tipi Comprime testo/HTML/JSON/JS/CSS al volo
intestazioni expires per risorse statiche Riduci i round trip dai visitatori ripetuti
try_files Inoltra a un controller frontale (PHP, Laravel, ecc.)
HSTS + intestazioni di sicurezza Mantieni il browser onesto riguardo a TLS

Fondamentali del reverse proxy

Per app Node.js, Python, Ruby che girano dietro Nginx:

location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Dimenticare X-Forwarded-For è il modo classico per perdere i veri IP dei client nei log della tua app.

Errori comuni

  • Mancanza di fallback server_name. Nginx usa il primo blocco server come predefinito se nessun nome corrisponde. Metti un blocco catch-all server_name _ che restituisce 444 per evitare attacchi all’host-header.
  • Ordine errato del certificato. Il file ssl_certificate deve essere fullchain (leaf + intermediates), non solo il leaf.
  • Caching eccessivo. Inviare expires 1y su /index.html rovinerà i deploy. Versiona gli URL delle risorse invece.
  • Nessun test prima del ricaricamento. Esegui sempre nginx -t prima di systemctl reload nginx: un errore di sintassi porta il sito offline.

Domande frequenti

HTTP/2 è stabile e supportato universalmente in Nginx 1.25+. HTTP/3 (QUIC) è disponibile in Nginx 1.25+ come sperimentale. Per una configurazione di produzione nel 2025, abilita HTTP/2 e opzionalmente sovrapponi HTTP/3 con le direttive http3 e quic.

La convenzione è /etc/ssl/certs/ per catene pubbliche e /etc/ssl/private/ per le chiavi. Let’s Encrypt mette tutto sotto /etc/letsencrypt/live/domain/. Usa quello che il tuo strumento di rinnovo si aspetta.

Sì, per la maggior parte dei siti. Aggiungi un blocco server separato sulla porta 80 che restituisce 301 https://$host$request_uri. Combinato con HSTS, il blocco HTTP verrà colpito raramente dopo la prima richiesta.

Esegui sudo nginx -t per analizzare la configurazione senza ricaricare. Se stampa “syntax is ok” e “test is successful,” ricarica con sudo systemctl reload nginx. Non usare mai restart in produzione: il ricaricamento è atomico.

Strumenti correlati

Strumento disponibile in altre lingue