Come si usa
- Inserisci il dominio e scegli il tipo di sito: un indirizzo upstream per un proxy inverso oppure la root web per gli altri.
- Seleziona HTTPS, HTTP/2, HSTS, redirect www, gzip, cache e header di sicurezza secondo necessità.
- Copia o scarica la configurazione in /etc/nginx/conf.d/, esegui nginx -t e ricarica nginx.
Opzioni spiegate
- Proxy inverso
- Inoltra all'indirizzo upstream e passa Host, X-Real-IP, X-Forwarded-For e X-Forwarded-Proto, così il backend vede IP e schema reali del visitatore.
- Single-page app
- I percorsi sconosciuti ricadono su index.html, quindi i router in modalità history (React Router, Vue Router) non restituiscono 404 al ricaricamento.
- HTTPS
- I percorsi dei certificati seguono i valori predefiniti di certbot (Let's Encrypt) e le richieste HTTP ricevono un redirect 301 a HTTPS. HTTP/2 usa la forma listen 443 ssl http2, compatibile con ogni versione di nginx.
- HSTS
- Dice ai browser di usare solo HTTPS per il dominio e tutti i sottodomini per un anno. Assicurati prima che ogni sottodominio supporti HTTPS, altrimenti diventeranno irraggiungibili.
Esempio: app a pagina singola con HTTPS e www
Con il dominio example.com, App a pagina singola, HTTPS, HTTP/2 e Rispondi anche a www. e reindirizzalo selezionati (e Compressione Gzip, Intestazioni di sicurezza e Cache lunga per i file statici disattivate per mantenere breve l’esempio), il generatore scrive tre blocchi server:
- La porta 80 risponde a entrambi i nomi, mantiene raggiungibile
/.well-known/acme-challenge/per il rinnovo del certificato e manda tutto il resto ahttps://example.com$request_uricon un 301. - La porta 443 per
www.example.comusa lo stesso certificato e restituisce un 301 verso il dominio senza www. - La porta 443 per
example.comserve il sito:
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
Entrambi i blocchi HTTPS puntano a /etc/letsencrypt/live/example.com/fullchain.pem e privkey.pem, consentono TLS 1.2 e 1.3 e usano una cache di sessione condivisa da 10 MB con un timeout di sessione di un giorno. La riga try_files è ciò che fa sì che il ricaricamento di una route lato client come /settings restituisca l’app anziché un 404.
Domande frequenti
Perché nginx -t avvisa che il parametro http2 è obsoleto?
Da nginx 1.25.1 è preferita la direttiva separata http2 on;, ma 1.24 — distribuito con Ubuntu 24.04 e altri sistemi — non la comprende. La forma listen ... http2 funziona ovunque; le versioni più recenti mostrano solo un avviso.
Il certificato deve includere www?
Sì, quando è attivo il redirect www. Richiedi entrambi i nomi, per esempio certbot -d example.com -d www.example.com.
Gli upload falliscono con 413 Request Entity Too Large?
nginx consente per impostazione predefinita un corpo della richiesta di 1 MB. Imposta Dimensione massima upload sul valore necessario, per esempio 100.
Le connessioni WebSocket falliscono attraverso il proxy?
Il proxy deve inoltrare gli header Upgrade e Connection. Attivare il supporto WebSocket li aggiunge e porta il timeout di lettura a un'ora.
Privacy
Questo strumento funziona interamente nel tuo browser. File e testi vengono elaborati sul tuo dispositivo e non vengono mai caricati sui nostri server.