Amministrazione di Nginx su un VPS
Una mappa strutturata dell'amministrazione Nginx per i proprietari di VPS. Copre cosa fa Nginx, quando usarlo e link a ogni tutorial necessario per la produzione.
Nginx alimenta una grande porzione del web. Serve file statici, inoltra le richieste alle applicazioni backend, termina TLS e bilancia il carico tra più server. Tutto da un singolo processo con un'impronta di memoria ridotta. Questa guida traccia la mappa dell'amministrazione Nginx su un VPS, dall'installazione al monitoraggio in produzione.
Questa pagina è una mappa. Copre cosa fa Nginx, quando ogni funzionalità è rilevante, e rimanda a tutorial dedicati per ogni argomento. Che tu stia distribuendo il tuo primo progetto personale o eseguendo un endpoint di inferenza IA dietro un reverse proxy, parti da qui e segui il percorso adatto al tuo caso d'uso.
Cosa fa Nginx
Nginx (pronunciato "engine-x") è un web server e reverse proxy guidato da eventi. È stato creato nel 2004 per risolvere il problema C10K: gestire 10.000 connessioni simultanee su un singolo server. A differenza dei server con un thread per connessione come il modello prefork di Apache, Nginx utilizza un ciclo di eventi asincrono. Un singolo processo worker gestisce migliaia di connessioni senza generare un nuovo thread per ciascuna.
Su un VPS, questo significa:
- Basso consumo di memoria. Un tipico processo worker di Nginx utilizza 2-10 MB di RAM. I worker prefork di Apache ne usano 10-40 MB ciascuno.
- Alta concorrenza. Un singolo worker può gestire migliaia di connessioni simultanee. Il fattore limitante è solitamente il sistema operativo, non Nginx.
- Prestazioni prevedibili sotto carico. Poiché Nginx non genera nuovi processi per ogni richiesta, il consumo di memoria resta stabile quando il traffico aumenta.
La versione stabile attuale è 1.28.x (1.28.2 a marzo 2026). Il ramo mainline (1.29.x) riceve le nuove funzionalità per primo. Il ramo stabile riceve solo correzioni di bug ad alta severità. Per un VPS in produzione, la versione stabile è la scelta giusta.
Tutti i tutorial di questa serie si riferiscono a Nginx installato dai repository ufficiali su Debian 12 o Ubuntu 24.04. Entrambi sono attivamente supportati e ampiamente utilizzati sui server di produzione. I repository predefiniti della distribuzione spesso includono versioni più vecchie di Nginx. Il repository ufficiale fornisce l'ultima versione stabile con le chiavi di firma corrette.
Casi d'uso principali
Nginx ricopre quattro ruoli su un VPS. La maggior parte delle configurazioni di produzione ne utilizza due o più contemporaneamente.
Server per file statici
Nginx serve HTML, CSS, JavaScript, immagini e font direttamente dal disco. La chiamata di sistema sendfile sposta i dati dal disco al socket di rete senza copiarli attraverso lo spazio utente. Questo evita l'overhead di leggere il contenuto dei file nella memoria dell'applicazione e riscriverlo.
Combinato con la compressione gzip o brotli e le intestazioni di cache (expires, Cache-Control), Nginx distribuisce le risorse statiche più velocemente di qualsiasi application server. Un processo Node.js o Python che serve file statici spreca cicli CPU per un lavoro che Nginx gestisce a livello di kernel.
Per siti statici, applicazioni a pagina singola o frontend full-stack, Nginx è lo strumento giusto. Anche con backend dinamici, delegare le risorse statiche a Nginx libera la tua applicazione per le richieste che richiedono logica.
Reverse proxy
Un reverse proxy si posiziona tra i client e la tua applicazione backend. Nginx riceve la richiesta HTTP, la inoltra a un processo backend (Node.js, Python, Go, Ruby o qualsiasi servizio HTTP) e restituisce la risposta al client.
Perché non esporre direttamente il backend? Diverse ragioni:
- Terminazione TLS in un unico punto. Configuri i certificati una volta in Nginx invece che in ogni applicazione.
- Inoltro degli header per passare l'IP reale del client al backend tramite
X-Real-IPeX-Forwarded-For. Senza questo, la tua applicazione vede solo127.0.0.1. - Buffering che assorbe le connessioni client lente. Nginx legge la risposta completa dal tuo backend veloce, libera la connessione backend e invia la risposta al client lento al proprio ritmo. Il tuo backend gestisce la richiesta successiva invece di attendere.
- Supporto WebSocket che funziona tramite Nginx con gli header
UpgradeeConnectioncorretti.
È anche il modo in cui esponi un'interfaccia web davanti a strumenti IA self-hosted. Un'istanza Ollama in esecuzione su localhost:11434 resta fuori dall'internet pubblico mentre Nginx gestisce autenticazione e HTTPS sul frontend. Il tutorial Come configurare Nginx come reverse proxy include una configurazione Ollama completa con regolazione dei timeout per le richieste di inferenza lunghe.
Terminazione TLS
Nginx gestisce l'handshake TLS e la decrittazione in modo che le applicazioni backend ricevano HTTP in chiaro su localhost. Questo centralizza la gestione dei certificati e scarica le operazioni crittografiche ad alto consumo di CPU dal codice applicativo.
L'handshake TLS coinvolge crittografia asimmetrica (scambio di chiavi RSA o ECDSA), che è di ordini di grandezza più costosa della crittografia simmetrica per il trasferimento dati effettivo. Delegando questo a Nginx, i tuoi processi backend restano focalizzati sulla logica di business.
Con Let's Encrypt e Certbot, ottieni certificati gratuiti con rinnovo automatico. Le direttive ssl_certificate e ssl_certificate_key di Nginx puntano ai file del certificato. Un timer systemd esegue certbot renew automaticamente. Il tutorial Configurare Let's Encrypt SSL/TLS per Nginx su Debian 12 e Ubuntu 24.04 copre la configurazione completa inclusi OCSP stapling e redirect da HTTP a HTTPS.
Per i deployment europei dove la sovranità dei dati è importante, gestire la terminazione TLS sul proprio VPS significa che il traffico cifrato viene decifrato solo su infrastruttura che controlli tu. Nessun CDN o load balancer di terze parti vede il tuo traffico in chiaro.
Bilanciatore di carico
Quando un singolo backend non basta, Nginx distribuisce le richieste tra più server upstream. Supporta tre algoritmi integrati:
- Round-robin (predefinito): le richieste vanno a ciascun backend a turno
- Least connections: le richieste vanno al backend con meno connessioni attive
- IP hash: le richieste dallo stesso IP client vanno sempre allo stesso backend (utile per l'affinità di sessione)
I controlli di integrità rimuovono automaticamente i backend non responsivi dal pool. Se un backend restituisce errori o va in timeout, Nginx smette di inviargli traffico finché non si riprende.
Per la maggior parte delle configurazioni VPS, il bilanciamento del carico diventa rilevante quando si scala orizzontalmente su più istanze applicative o si eseguono deployment blue-green con rilasci senza downtime.
Cosa ti serve
Prima di iniziare qualsiasi tutorial di questa serie, hai bisogno di:
- Un VPS con Debian 12 o Ubuntu 24.04 con accesso root o sudo. I piani VPS Virtua Cloud funzionano subito per tutto quello che è trattato qui.
- Accesso SSH con autenticazione a chiave. L'autenticazione con password dovrebbe essere disabilitata. I bot brute-force iniziano ad attaccare SSH entro pochi minuti dalla messa online di un server.
- Un nome di dominio con un record A che punta all'indirizzo IP del tuo server. Necessario per i certificati TLS. Opzionale per il tutorial di installazione.
- Familiarità di base con la riga di comando Linux: navigare nelle directory, modificare file con
vimonano, eseguire comandi consudo.
Se sei nuovo alla configurazione di VPS, configura le chiavi SSH e un firewall prima di toccare Nginx. Un server esposto a internet senza queste basi è un rischio.
La serie di tutorial
Ogni articolo qui sotto si concentra su un argomento. Si costruiscono uno sull'altro in ordine, ma puoi saltare a qualsiasi articolo se hai già i prerequisiti coperti.
1. Installare Nginx
Installa Nginx dai repository ufficiali. Copre Debian 12 e Ubuntu 24.04 con verifica della chiave GPG, installazione con apt, gestione systemd (start, stop, reload, status) e regole firewall per ufw e nftables. Include passaggi di verifica con curl e ss per confermare che Nginx è in ascolto sulle porte corrette.
Installare Nginx su Debian 12 e Ubuntu 24.04 dal repository ufficiale
2. Comprendere la struttura del file di configurazione
Prima di modificare qualsiasi configurazione, comprendi come Nginx la organizza. Il contesto principale, i blocchi events, http, server e location formano una gerarchia. Le direttive impostate in un contesto genitore sono ereditate dai contesti figli a meno che non siano esplicitamente sovrascritte. Questo articolo copre tutti i contesti principali (inclusi stream e upstream), la direttiva include per configurazioni modulari e il pattern sites-available/sites-enabled usato su Debian e Ubuntu.
Struttura dei file di configurazione Nginx
3. Configurare i blocchi server
Ospita più domini su un singolo VPS. I blocchi server (l'equivalente Nginx degli host virtuali Apache) ti permettono di eseguire siti separati con configurazioni, log di accesso, log di errore e document root indipendenti. Copre la struttura delle directory, la creazione dei file dei blocchi server, l'attivazione e disattivazione dei siti con link simbolici, la direttiva default_server, l'ordine di corrispondenza di server_name e il logging per vhost.
Nginx Server Block: ospita più domini su un VPS
4. Configurare SSL/TLS con Let's Encrypt
Aggiungi HTTPS ai tuoi siti usando Certbot e Let's Encrypt. Copre i prerequisiti DNS, l'installazione di Certbot basata su snap (il metodo attualmente raccomandato), l'emissione di certificati con il plugin Nginx, il rinnovo automatico tramite timer systemd, il redirect da HTTP a HTTPS e OCSP stapling. Ogni passaggio include un comando di verifica.
Configurare Let's Encrypt SSL/TLS per Nginx su Debian 12 e Ubuntu 24.04
5. Configurare un reverse proxy
Metti Nginx davanti alle tue applicazioni backend. Copre la sintassi di proxy_pass, l'inoltro degli header (X-Real-IP, X-Forwarded-For, X-Forwarded-Proto), il proxy WebSocket con header Upgrade, i controlli di buffering (proxy_buffering, proxy_buffer_size) e la regolazione dei timeout (proxy_connect_timeout, proxy_read_timeout). Include un esempio funzionante per il proxy verso un'istanza Ollama locale con timeout estesi per richieste di inferenza che possono durare 30 secondi o più.
Come configurare Nginx come reverse proxy
6. Rafforzare la sicurezza
Blinda Nginx oltre le impostazioni predefinite. Ogni direttiva è associata alla minaccia specifica che mitiga. Copre gli header di sicurezza (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy), l'occultamento dei token del server, la disabilitazione dei metodi HTTP non utilizzati, le restrizioni di accesso basate su IP, la selezione delle suite di cifratura TLS usando il profilo Modern di Mozilla e HSTS con considerazioni sul preload. Verifica tramite securityheaders.com e SSL Labs.
Hardening della sicurezza di Nginx su Ubuntu e Debian
7. Ottimizzare le prestazioni
Ottimizza Nginx per il traffico di produzione. Copre worker_processes auto e il dimensionamento di worker_connections, epoll e multi_accept, tuning del keepalive, configurazione gzip (livelli di compressione, tipi MIME, lunghezza minima), setup del modulo brotli, caching dei file statici con expires e Cache-Control, open_file_cache per ridurre l'I/O su disco, dimensionamento dei buffer proxy e attivazione di HTTP/2. Include una metodologia di benchmark con wrk per misurare l'impatto di ogni modifica.
Per i siti che prevedono traffico elevato, un VPS ad alte prestazioni offre più margine per gli handshake TLS e la compressione.
Ottimizzazione delle prestazioni di Nginx su un VPS
8. Limitazione del rate e protezione DDoS
Proteggi i tuoi endpoint da abusi e attacchi volumetrici. Copre limit_req_zone e limit_req con i parametri burst e nodelay, limit_conn per il throttling delle connessioni, pagine di errore 429 personalizzate, modalità dry_run per test sicuri senza bloccare il traffico reale e integrazione con fail2ban con un filtro funzionante e configurazione jail per bannare i recidivi a livello di firewall.
Rate Limiting con Nginx e protezione DDoS
9. Logging e monitoraggio
Configura un'osservabilità di livello produzione. Copre le definizioni personalizzate di log_format incluso un formato JSON strutturato con escape=json (pronto per log shipper come Filebeat o Vector), il logging condizionale con map per filtrare health check e risorse statiche, la rotazione dei log con configurazione logrotate, l'analisi in tempo reale con GoAccess e le metriche Prometheus tramite il modulo stub_status e prometheus-nginxlog-exporter.
10. Cheatsheet Nginx
Riferimento rapido per le operazioni quotidiane. Comandi systemd, snippet di configurazione comuni (redirect, proxy_pass, blocco SSL, limitazione del rate, gzip), posizione dei file di log, debug con nginx -T (dump della configurazione completa unificata) e curl -I (ispezione degli header di risposta), e codici di errore comuni (502, 504, 413, 403) con le loro cause e soluzioni specifiche di Nginx.
Cheatsheet Nginx: comandi, snippet di configurazione e correzione errori
Quando delegare la gestione
Gestire Nginx in produzione significa tenere il passo con patch di sicurezza, rinnovi dei certificati, derive di configurazione e rotazione dei log. Se preferisci concentrarti sul codice della tua applicazione e lasciare l'infrastruttura a qualcun altro, l'hosting di server gestiti se ne occupa al posto tuo. Mantieni tutta la flessibilità di Nginx senza il peso della manutenzione.
Da dove iniziare
Stai distribuendo il tuo primo sito? Inizia con il tutorial di installazione (Installare Nginx su Debian 12 e Ubuntu 24.04 dal repository ufficiale) e segui la serie in ordine.
Hai già Nginx in esecuzione? Vai direttamente all'argomento che ti serve. L'articolo sulla struttura della configurazione (Struttura dei file di configurazione Nginx) colma le lacune se hai copiato e incollato configurazioni senza capire la gerarchia.
Esegui carichi di lavoro IA? Vai direttamente al tutorial sul reverse proxy (Come configurare Nginx come reverse proxy) per la configurazione del reverse proxy Ollama. Poi blindalo con la guida al rafforzamento della sicurezza (Hardening della sicurezza di Nginx su Ubuntu e Debian) e il tutorial sulla limitazione del rate (Rate Limiting con Nginx e protezione DDoS).
Ti serve solo un comando rapido? Il cheatsheet (Cheatsheet Nginx: comandi, snippet di configurazione e correzione errori) ha tutto in una sola pagina.
Pronto a provare?
Ospita le tue applicazioni web su un VPS affidabile. →Articoli correlati
- Come configurare Nginx come reverse proxy
- Installare Nginx su Debian 12 e Ubuntu 24.04 dal repository ufficiale
- Struttura dei file di configurazione Nginx
- Nginx Server Block: ospita più domini su un VPS
- Configurare Let's Encrypt SSL/TLS per Nginx su Debian 12 e Ubuntu 24.04
- Hardening della sicurezza di Nginx su Ubuntu e Debian
- Cheatsheet Nginx: comandi, snippet di configurazione e correzione errori
- Ottimizzazione delle prestazioni di Nginx su un VPS