Installare Nginx su Debian 12 e Ubuntu 24.04 dal repository ufficiale

7 min di lettura·Matthieu|

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