Installare Nginx su Debian 12 e Ubuntu 24.04 dal repository ufficiale
Installa Nginx dal repository ufficiale nginx.org su Debian 12 o Ubuntu 24.04. Copre la chiave di firma, il pinning apt, le regole firewall per UFW e nftables, la gestione systemd e la verifica dopo ogni passaggio.
Installare Nginx su Debian 12 e Ubuntu 24.04 dal repository ufficiale
Questo tutorial installa Nginx dal repository ufficiale nginx.org su un VPS Debian 12 o Ubuntu 24.04. Ottieni l'ultima versione (1.28.2 stable o 1.29.6 mainline) invece del pacchetto obsoleto fornito dalla tua distribuzione. Ogni passaggio include una verifica per sapere esattamente cosa e successo.
Per capire dove si colloca Nginx nel tuo stack server, consulta Nginx Administration on a VPS.
Prerequisiti
Servono:
- Un VPS con Debian 12 (Bookworm) o Ubuntu 24.04 (Noble Numbat)
- Un utente non-root con privilegi
sudo - Accesso SSH al server
Tutti i comandi di questo tutorial vengono eseguiti come utente sudo. Non come root.
Meglio installare Nginx stable o mainline?
Nginx mantiene due rami. Stable (numero di versione pari, attualmente 1.28.x) riceve solo correzioni critiche. Mainline (numero di versione dispari, attualmente 1.29.x) riceve tutte le nuove funzionalita, correzioni di bug e patch di sicurezza. Il team Nginx raccomanda mainline per la produzione. Stable esiste per chi vuole cambiamenti minimi tra gli aggiornamenti.
| Stable | Mainline | |
|---|---|---|
| Versione attuale | 1.28.2 | 1.29.6 |
| Frequenza aggiornamenti | Solo correzioni critiche | Ogni 4-6 settimane |
| Nuove funzionalita | No | Si |
| Raccomandato da nginx.org | Per configurazioni conservative | Per la produzione |
Questo tutorial usa stable per impostazione predefinita. Per installare mainline, sostituisci l'URL del repository dove indicato.
Perche usare il repository ufficiale invece del pacchetto della distribuzione?
I repository apt predefiniti di Debian 12 e Ubuntu 24.04 forniscono rispettivamente Nginx 1.22.1 e 1.24.0. Queste versioni sono indietro di mesi o anni rispetto alle release ufficiali. Il repository nginx.org fornisce l'ultima build stable o mainline, mantenuta dal team Nginx.
| Fonte | Versione Debian 12 | Versione Ubuntu 24.04 | Mantenuto da |
|---|---|---|---|
| Repository della distribuzione | 1.22.1 | 1.24.0 | Manutentori dell'OS |
| nginx.org stable | 1.28.2 | 1.28.2 | Team Nginx |
| nginx.org mainline | 1.29.6 | 1.29.6 | Team Nginx |
Come installare Nginx su Debian 12 dal repository ufficiale?
Installa i prerequisiti, aggiungi la chiave di firma nginx.org, configura la sorgente apt, fissa il repository e installa. Ci vogliono circa due minuti.
Passaggio 1: Installare i prerequisiti
sudo apt update
sudo apt install -y curl gnupg2 ca-certificates lsb-release debian-archive-keyring
Passaggio 2: Importare la chiave di firma nginx.org
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Verifica l'impronta digitale della chiave:
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
Occhio attento: l'output elenca piu chiavi di firma. Cerca questa impronta digitale tra di esse:
573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
Se nessuna delle impronte elencate corrisponde, elimina il file e scaricalo di nuovo. Una chiave non corrispondente significa che il download e stato intercettato o corrotto.
Passaggio 3: Aggiungere il repository apt
Per stable:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/debian $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Per mainline, sostituisci packages con packages/mainline:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/mainline/debian $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Passaggio 4: Fissare il repository ufficiale
Questo assicura che apt preferisca il pacchetto nginx.org rispetto alla versione della distribuzione:
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginx
Senza il pinning, un futuro apt upgrade potrebbe sostituire il pacchetto ufficiale con la vecchia versione della distribuzione.
Passaggio 5: Installare Nginx
sudo apt update
sudo apt install -y nginx
Passaggio 6: Avviare e verificare l'installazione
nginx -v
Output atteso per stable:
nginx version: nginx/1.28.2
Il pacchetto nginx.org non si avvia automaticamente dopo l'installazione. Avvialo ora:
sudo systemctl start nginx
Verifica che il servizio sia in esecuzione:
sudo systemctl status nginx
Occhio attento: cerca Active: active (running) nell'output.
Verifica che Nginx sia in ascolto sulla porta 80:
ss -tlnp | grep :80
Output atteso:
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=...,fd=...))
Testa la pagina di benvenuto:
curl -I http://localhost
Occhio attento: la risposta deve includere HTTP/1.1 200 OK e Server: nginx/1.28.2.
Come installare Nginx su Ubuntu 24.04 dal repository ufficiale?
Il processo e quasi identico a Debian. Le uniche differenze sono il pacchetto dei prerequisiti e l'URL del repository.
Passaggio 1: Installare i prerequisiti
sudo apt update
sudo apt install -y curl gnupg2 ca-certificates lsb-release ubuntu-keyring
Nota: Ubuntu usa ubuntu-keyring invece di debian-archive-keyring.
Passaggio 2: Importare la chiave di firma nginx.org
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Verifica l'impronta digitale (stessa chiave di Debian):
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
Cerca 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 tra le chiavi elencate.
Passaggio 3: Aggiungere il repository apt
Per stable:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Per mainline:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/mainline/ubuntu $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Passaggio 4: Fissare il repository ufficiale
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginx
Passaggio 5: Installare Nginx
sudo apt update
sudo apt install -y nginx
Passaggio 6: Avviare e verificare l'installazione
Avvia Nginx (non si avvia automaticamente dopo l'installazione):
sudo systemctl start nginx
Esegui le stesse verifiche di Debian:
nginx -v
sudo systemctl status nginx
ss -tlnp | grep :80
curl -I http://localhost
Dovresti vedere nginx/1.28.2 (stable) o nginx/1.29.6 (mainline) sia in nginx -v che negli header della risposta curl.
Come gestire Nginx con systemd?
Nginx include un file unit systemd. Questi sono i comandi che userai quotidianamente.
| Comando | Cosa fa |
|---|---|
sudo systemctl start nginx |
Avviare Nginx |
sudo systemctl stop nginx |
Fermare Nginx |
sudo systemctl restart nginx |
Fermare e riavviare (interrompe le connessioni) |
sudo systemctl reload nginx |
Ricaricare la configurazione senza interrompere le connessioni |
sudo systemctl enable nginx |
Avviare all'avvio del sistema |
sudo systemctl disable nginx |
Non avviare all'avvio del sistema |
sudo systemctl status nginx |
Mostrare lo stato e i log recenti |
Reload vs restart: Usa reload dopo modifiche alla configurazione. Applica la nuova configurazione senza interrompere le connessioni attive. Usa restart solo quando hai modificato impostazioni a livello binario o aggiornato Nginx. Reload e sicuro. Restart interrompe ogni connessione attiva.
Abilita l'avvio automatico di Nginx al boot:
sudo systemctl enable nginx
Testa sempre la configurazione prima di ricaricare:
sudo nginx -t
Output atteso:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Se nginx -t segnala errori, correggili prima di ricaricare. Un reload fallito lascia la configurazione precedente attiva. Un restart fallito lascia Nginx fermo.
Come configurare le regole firewall UFW per Nginx?
UFW (Uncomplicated Firewall) e il frontend firewall predefinito su Ubuntu. E disponibile su Debian ma non installato per impostazione predefinita. Alcune immagini VPS non includono UFW. Se ufw non viene trovato, installalo prima:
sudo apt install -y ufw
Il pacchetto nginx.org non include profili applicazione UFW (Nginx Full, Nginx HTTP, Nginx HTTPS). Quei profili sono inclusi solo nel pacchetto della distribuzione. Usa i numeri di porta.
Consenti prima SSH (per non restare chiuso fuori):
sudo ufw allow OpenSSH
Consenti HTTP (80) e HTTPS (443):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Se ti serve solo HTTPS:
sudo ufw allow 443/tcp
Assicurati che UFW sia attivo:
sudo ufw enable
Verifica le regole:
sudo ufw status
L'output atteso include:
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
Se ufw status mostra Status: inactive, esegui prima sudo ufw enable.
Come configurare le regole firewall nftables per Nginx?
Debian 12 usa nftables come backend firewall predefinito. Se gestisci le regole direttamente (senza UFW), aggiungi le porte Nginx alla tua configurazione nftables.
Modifica la tua configurazione nftables:
sudo nano /etc/nftables.conf
Aggiungi queste regole nella tua catena input (all'interno della tua tabella inet filter):
tcp dport { 80, 443 } accept
Una configurazione minima funzionante:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iif lo accept
ct state established,related accept
tcp dport 22 accept
tcp dport { 80, 443 } accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
Applica le regole:
sudo nft -f /etc/nftables.conf
Verifica:
sudo nft list ruleset
Occhio attento: cerca tcp dport { 80, 443 } accept nell'output. Se manca, le regole non sono state applicate.
Abilita nftables all'avvio:
sudo systemctl enable nftables
Come verificare che Nginx funzioni correttamente?
Dopo l'installazione e la configurazione del firewall, segui questa checklist.
Dal server:
nginx -v
sudo systemctl status nginx
ss -tlnp | grep :80
curl -I http://localhost
Dalla tua macchina locale (sostituisci YOUR_SERVER_IP):
curl -I http://YOUR_SERVER_IP
Header di risposta attesi:
HTTP/1.1 200 OK
Server: nginx/1.28.2
Se il curl esterno va in timeout ma localhost funziona, il tuo firewall sta bloccando la porta 80. Torna alla sezione UFW o nftables sopra.
Puoi anche aprire http://YOUR_SERVER_IP in un browser. Dovresti vedere la pagina "Welcome to nginx!".
Posizioni di file e directory principali
| Percorso | Scopo |
|---|---|
/etc/nginx/nginx.conf |
File di configurazione principale |
/etc/nginx/conf.d/ |
File di configurazione aggiuntivi (caricati per impostazione predefinita) |
/var/log/nginx/access.log |
Log degli accessi |
/var/log/nginx/error.log |
Log degli errori |
/usr/share/nginx/html/ |
Document root predefinita |
Il pacchetto ufficiale nginx.org usa /etc/nginx/conf.d/ per le configurazioni dei siti. Questo differisce dal pacchetto della distribuzione, che usa sites-available/ e sites-enabled/. Entrambi gli approcci funzionano. Il pattern conf.d e piu semplice.
Per capire come sono organizzati i file di configurazione Nginx, consulta . Per ospitare piu domini su questo server, consulta .
Copyright 2026 Virtua.Cloud. Tutti i diritti riservati. Questo contenuto e un'opera originale del team Virtua.Cloud. La riproduzione, ripubblicazione o redistribuzione senza autorizzazione scritta e vietata.
Pronto a provare?
Distribuisci il tuo server in pochi secondi. Linux, Windows o FreeBSD.
Vedi piani VPS