Guida passo passo per installare Nginx su Debian 12, gestire il servizio con systemd, creare un virtual host e abilitare HTTPS con Let’s Encrypt. Per clienti Boxis e amministratori di sistema.
Installare e configurare Nginx su Debian 12 (Bookworm)
Ultimo aggiornamento: marzo 2026
Tempo di lettura: ~12 minuti
Destinatari: amministratori di sistema e utenti esperti con un server Debian 12.
Nginx è un server HTTP ad alte prestazioni e un reverse proxy. Su Debian 12 (Bookworm) si integra bene con systemd ed è adatto davanti a PHP, Node.js o API upstream. Questa guida copre installazione pulita, linee guida di sicurezza di base, un virtual host minimo e, facoltativamente, TLS con Let’s Encrypt.
Risultato atteso
- Nginx installato dai repository Debian e servizio verificato.
- Porte HTTP/HTTPS aperte (esempio con UFW).
- Document root dedicato e blocco
serverdedicato. - Opzionale: certificato Let’s Encrypt e rinnovo automatico.
Prerequisiti
- Server Debian 12 con accesso SSH.
- Utente con privilegi
sudo(evitare l’uso quotidiano diroot). - Nome DNS (es.
app.example.com) che punti all’IP pubblico se si desidera HTTPS e rinnovo automatico. - Familiarità di base con la shell.
Nota Boxis: su hosting gestito da Boxis le modifiche a livello di server possono essere limitate; aprite un ticket prima di intervenire sullo stack web in ambienti condivisi.
1. Aggiornare gli indici APT e installare Nginx
sudo apt update
sudo apt install -y nginx
Debian fornisce una build collaudata di Nginx; i repository di terze parti servono solo se servono moduli specifici.
2. Firewall: consentire HTTP e HTTPS (UFW)
Se UFW è attivo:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
sudo ufw status
Con nftables o gruppi di sicurezza cloud, aprite TCP 80 e TCP 443 lì.
3. Gestire Nginx con systemd
| Azione | Comando |
|---|---|
| Abilitare all’avvio | sudo systemctl enable nginx |
| Avviare | sudo systemctl start nginx |
| Stato | sudo systemctl status nginx |
| Ricaricare la config | sudo systemctl reload nginx |
| Verificare la sintassi | sudo nginx -t |
Dopo ogni modifica ai file di configurazione eseguire nginx -t prima del reload.
4. Dove si trova la configurazione su Debian
Struttura tipica:
- Config principale:
/etc/nginx/nginx.conf - Siti:
/etc/nginx/sites-available/(collegamenti insites-enabled/) - Extra:
/etc/nginx/conf.d/*.conf
Preferite sites-available / sites-enabled per abilitare o disabilitare siti senza cancellare i file.
5. Creare un virtual host (blocco server)
Esempio: host app.example.com con file in /var/www/app.example.com/html.
5.1 Directory e pagina di prova
sudo mkdir -p /var/www/app.example.com/html
echo '<!DOCTYPE html><html><head><meta charset="utf-8"><title>OK</title></head><body><h1>It works</h1></body></html>' | sudo tee /var/www/app.example.com/html/index.html
sudo chown -R www-data:www-data /var/www/app.example.com
5.2 File di configurazione
Creare /etc/nginx/sites-available/app.example.com.conf:
server {
listen 80;
listen [::]:80;
server_name app.example.com;
root /var/www/app.example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Abilitare il sito:
sudo ln -sf /etc/nginx/sites-available/app.example.com.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Verificare con browser o curl -I http://app.example.com.
6. HTTPS con Let’s Encrypt
sudo apt install -y certbot python3-certbot-nginx
Ottenere il certificato (adattare email e dominio):
sudo certbot --nginx -d app.example.com -m voi@example.com --agree-tos --non-interactive
Verificare il rinnovo:
sudo certbot renew --dry-run
Il rinnovo è in genere gestito da un timer systemd o cron; controllare con systemctl list-timers | grep certbot.
7. Buone pratiche operative
- Preferire
reloadarestartdopo semplici modifiche alla config. - Log per sito se il traffico è elevato (
access_log/error_log). server_tokens off;se consentito dalle policy.- PHP o applicazioni:
fastcgi_passverso PHP-FPM oproxy_passverso upstream coerente. - Backup di
/etc/nginx/prima di modifiche importanti.
8. Risoluzione rapida dei problemi
| Sintomo | Cosa controllare |
|---|---|
502 Bad Gateway |
Applicazione downstream non raggiungibile; proxy_pass / fastcgi_pass errato. |
403 Forbidden |
Permessi; percorso root; SELinux/AppArmor. |
| Config non accettata | sudo nginx -t e correggere le righe indicate. |
| Rinnovo certificato fallito | DNS ancora puntato qui; porta 80 raggiungibile per HTTP-01. |
9. Sintesi
Avete installato Nginx su Debian 12, aperto le porte web, creato un virtual host e, opzionalmente, abilitato HTTPS con Certbot. In produzione, affinate log, limiti di richiesta e monitoraggio degli upstream.
Argomenti correlati
- Ricerca nella knowledge base Boxis:
/{lang}/knowledgebase/search/ - Hosting e DNS: categoria Hosting & domini quando disponibile.
Documento generico; comandi e percorsi possono variare in base all’immagine e alle personalizzazioni.