- 1 Che cos’è Nginx?
- 2 Vantaggi dell’utilizzo di Nginx su Ubuntu
- 3 Verifica dei pacchetti richiesti
- 4 Installare Nginx
- 5 Verifica dell’installazione
- 6 Configurazione del firewall
- 7 File di configurazione e struttura di base
- 8 Configurare un Virtual Host
- 9 Configurazione SSL/TLS
- 10 Comandi base di Nginx
- 11 Abilitare l’avvio automatico
- 12 Controllare i log per la risoluzione dei problemi
- 13 Apertura delle porte con UFW
- 14 Miglioramenti aggiuntivi della sicurezza
- 15 Ottimizzazione delle prestazioni
- 16 Risoluzione dei problemi comuni
- 17 Riepilogo dei punti chiave
- 18 Prossimi Passi
Che cos’è Nginx?
Nginx (pronunciato “engine-x”) è un server HTTP ad alte prestazioni e un server proxy inverso. È ampiamente utilizzato in tutto il mondo per il suo design leggero e la sua flessibilità, soprattutto per la capacità di gestire carichi di traffico elevati.
Vantaggi dell’utilizzo di Nginx su Ubuntu
Ubuntu è una distribuzione Linux molto diffusa che funziona bene con Nginx. Grazie al suo sistema di gestione dei pacchetti (APT), installare e aggiornare Nginx è semplice, e offre eccellente stabilità e sicurezza.
Leggendo questo articolo, imparerai:
- Come installare Nginx su Ubuntu
- Procedura di configurazione e gestione di base
- Ottimizzazione delle prestazioni e risoluzione dei problemi
Ora, iniziamo.
Verifica dei pacchetti richiesti
Prima di avviare l’installazione, assicurati che il tuo sistema sia aggiornato eseguendo i seguenti comandi:
sudo apt update
sudo apt upgrade
Installare Nginx
Per installare Nginx, inserisci il seguente comando:
sudo apt install nginx
Questo comando scarica e installa automaticamente Nginx dal repository APT di Ubuntu.
Verifica dell’installazione
Per verificare se l’installazione è avvenuta con successo, usa il comando seguente per controllare lo stato di Nginx:
sudo systemctl status nginx
Se l’output mostra “active (running)”, l’installazione è avvenuta con successo.
Configurazione del firewall
Ubuntu include UFW (Uncomplicated Firewall), che puoi usare per consentire il traffico Nginx.
sudo ufw allow 'Nginx Full'
sudo ufw enable
Ora, Nginx è configurato per operare sulle porte 80 (HTTP) e 443 (HTTPS).

File di configurazione e struttura di base
I principali file di configurazione di Nginx si trovano in:
- Main configuration file:
/etc/nginx/nginx.conf
- File di configurazione specifici del sito: All’interno della directory
/etc/nginx/sites-available/
Tipicamente, si crea un file di configurazione di un host virtuale in sites-available
e si crea un collegamento simbolico a sites-enabled
per l’attivazione.
Configurare un Virtual Host
I virtual host consentono di gestire più domini o progetti su un unico server. Il seguente esempio imposta example.com
:
sudo nano /etc/nginx/sites-available/example.com
Inserisci il seguente contenuto:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
Salva il file e attiva la configurazione con i seguenti comandi:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Configurazione SSL/TLS
Per abilitare la comunicazione sicura, configura un certificato SSL/TLS. Puoi utilizzare Let’s Encrypt per ottenere un certificato gratuito.
Prima, installa certbot
:
sudo apt install certbot python3-certbot-nginx
Successivamente, esegui il comando seguente per ottenere e configurare automaticamente il certificato SSL:
sudo certbot --nginx -d example.com -d www.example.com
Per evitare la scadenza, configura anche il rinnovo automatico del certificato.
Comandi base di Nginx
Su Ubuntu, puoi gestire Nginx usando il comando systemctl
. Ecco le operazioni principali:
- Avvia Nginx
sudo systemctl start nginx
- Ferma Nginx
sudo systemctl stop nginx
- Riavvia Nginx
Richiesto quando si apportano modifiche importanti alla configurazione.
sudo systemctl restart nginx
- Ricarica Nginx
Applica le modifiche di configurazione senza riavviare.
sudo systemctl reload nginx
- Verifica lo stato di Nginx
Verifica se Nginx è in esecuzione correttamente.
sudo systemctl status nginx
Abilitare l’avvio automatico
Per garantire che Nginx si avvii automaticamente dopo un riavvio del sistema:
- Abilita l’avvio automatico
sudo systemctl enable nginx
- Disabilita l’avvio automatico (se necessario)
sudo systemctl disable nginx
Controllare i log per la risoluzione dei problemi
Se Nginx non funziona come previsto, controlla i log per trovare la causa.
- Visualizza i registri degli errori
sudo tail -f /var/log/nginx/error.log
- Visualizza i registri di accesso
sudo tail -f /var/log/nginx/access.log
Apertura delle porte con UFW
UFW (Uncomplicated Firewall) è uno strumento firewall incluso di default in Ubuntu. Per garantire il corretto funzionamento di Nginx, è necessario aprire le porte 80 (HTTP) e 443 (HTTPS).
- Verifica lo stato corrente di UFW
sudo ufw status
- Consenti traffico Nginx
Esegui il seguente comando per aprire le porte necessarie:
sudo ufw allow 'Nginx Full'
- Abilita UFW
Se il firewall è disabilitato, abilitalo:
sudo ufw enable
Miglioramenti aggiuntivi della sicurezza
- Disabilita i metodi HTTP non necessari
Per aumentare la sicurezza, disabilita i metodi HTTP non necessari aggiungendo quanto segue al file di configurazione di Nginx:
if ($request_method !~ ^(GET|POST|HEAD)$) {
return 444;
}
- Disabilita l’elenco delle directory
Previeni che i contenuti della directory siano accessibili pubblicamente aggiungendo:
autoindex off;
- Potenzia SSL/TLS
Usa impostazioni di cifratura forti nella tua configurazione SSL:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
Ottimizzazione delle prestazioni
1. Configurazione dei processi worker
Nginx utilizza un’architettura multiprocesso. Impostare un numero adeguato di processi worker ottimizza le prestazioni.
Modifica il file di configurazione /etc/nginx/nginx.conf
e imposta:
worker_processes auto;
L’impostazione “auto” regola automaticamente il numero di processi worker in base ai core della CPU.
2. Aumentare le connessioni dei worker
Per impostazione predefinita, ogni processo worker ha un numero limitato di connessioni. Incrementare questo valore migliora la gestione di carichi di traffico elevati.
Aggiungi o modifica la seguente riga nel file di configurazione:
worker_connections 1024;
3. Abilitare HTTP/2
Abilitare HTTP/2 migliora l’efficienza della comunicazione e velocizza il caricamento del sito web.
Modifica il /etc/nginx/sites-available/example.com
file e cambia la direttiva listen
come segue:
listen 443 ssl http2;
Quindi ricarica Nginx:
sudo systemctl reload nginx
4. Abilitare la compressione dei contenuti
Comprimere i file prima di inviarli riduce l’uso della larghezza di banda e migliora i tempi di caricamento.
Aggiungi o abilita le seguenti impostazioni:
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
5. Configurare la cache
Configurare la cache riduce le richieste ripetute per le risorse statiche.
Aggiungi la seguente configurazione:
location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
expires 30d;
access_log off;
}
Risoluzione dei problemi comuni
1. Gestione lenta delle richieste sotto carico elevato
- Causa: Processi worker insufficienti o limiti di connessione.
- Soluzione: Regola i processi worker e le connessioni, oppure considera l’uso di un bilanciatore di carico.
2. Errore “403 Forbidden”
- Causa: Direttiva
root
errata nel file di configurazione o permessi del file errati. - Soluzione: Verifica la direttiva
root
e aggiorna i permessi del file:
sudo chmod -R 755 /var/www/example.com/html
sudo chown -R www-data:www-data /var/www/example.com/html
3. Problemi di timeout del server
- Causa: Tempo di elaborazione della richiesta lungo.
- Soluzione: Regola le impostazioni di timeout:
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;
4. Errori di riavvio di Nginx
- Causa: Errori nel file di configurazione.
- Soluzione: Verifica la configurazione prima di riavviare:
sudo nginx -t
Riepilogo dei punti chiave
1. Installazione di Nginx su Ubuntu
- Ho preparato i pacchetti richiesti e installato Nginx usando APT.
- Configurato il firewall per consentire il traffico Nginx.
2. Configurazione di base
- Ho compreso la struttura del file di configurazione di Nginx e ho configurato host virtuali e SSL/TLS.
3. Gestione di Nginx
- Ho imparato i comandi essenziali per avviare, fermare e ricaricare Nginx.
- Verificati i log per la risoluzione dei problemi.
4. Miglioramenti della sicurezza
- Configurato UFW e applicate impostazioni di sicurezza aggiuntive.
5. Ottimizzazione delle prestazioni e risoluzione dei problemi
- Processi worker ottimizzati, abilitato HTTP/2 e impostata la cache.
- Affrontati i problemi comuni di Nginx.
Prossimi Passi
Ora che hai le basi di Nginx su Ubuntu, considera i seguenti passaggi:
- Impara configurazioni avanzate come bilanciamento del carico e proxy inverso.
- Migliora la sicurezza con WAF e moduli di sicurezza aggiuntivi per Nginx.
- Automatizza le distribuzioni con Ansible o Docker.
- Monitora le prestazioni con strumenti come Prometheus e Grafana.
Applicando questi concetti, potrai gestire efficacemente un server web ad alte prestazioni con Nginx su Ubuntu.