Nginx è un potente server web noto per le sue elevate prestazioni e il basso consumo di risorse. Progettato originariamente per gestire il problema C10k, eccelle nel servire contenuto statico, bilanciamento del carico e proxy inverso. La combinazione di Nginx con Debian, nota per la sua stabilità e sicurezza, si traduce in un ambiente server robusto e affidabile.
Caratteristiche principali di Nginx:
- Alte prestazioni: Gestisce in modo efficiente più connessioni simultanee.
- Basso utilizzo delle risorse: Ottimizzato per funzionare con memoria e CPU minime.
- Bilancio del carico: Distribuisce il traffico su più server per migliorare le prestazioni.
- Proxy inverso: Inoltra le richieste dei client ai server backend senza problemi.
- Gestione del contenuto statico: Serve file statici in modo rapido ed efficiente.
- Caratteristiche di sicurezza: Supporta SSL/TLS per comunicazioni crittografate.
- Flessibilità: Supporta protocolli come HTTP, HTTPS, SMTP, POP3 e IMAP.
Vantaggi della combinazione di Nginx con Debian:
- Stabilità: La reputazione di stabilità di Debian garantisce che il tuo server rimanga affidabile.
- Sicurezza: Le robuste misure di sicurezza di Debian proteggono il tuo server Nginx dalle vulnerabilità.
- Facilità d'uso: Il sistema di gestione dei pacchetti di Debian semplifica l'installazione e la manutenzione di Nginx.
- Supporto comunitario: Nginx e Debian hanno comunità forti che forniscono ampie risorse e supporto.
Passando alla configurazione, scoprirai che la stabilità di Debian si abbina perfettamente all'efficienza di Nginx, creando un ambiente ideale per le tue applicazioni web. Approfondiamo i passaggi necessari per installare e configurare Nginx su un server Debian.
Preparare il sistema prima dell'installazione di Nginx
Assicurati che il tuo sistema sia aggiornato prima di installare Nginx. Ciò previene potenziali conflitti durante l'installazione e riduce il rischio di problemi di compatibilità e vulnerabilità della sicurezza.
Per aggiornare i pacchetti di sistema, esegui quanto segue:
sudo apt update && sudo apt upgrade
Questo comando recupera l'elenco degli aggiornamenti disponibili (tramite apt update
) e quindi aggiorna i pacchetti software correnti alle versioni più recenti (utilizzando apt upgrade
).
Installa lo standard "Web Server" di NGINX
Per impostazione predefinita, NGINX è disponibile nei repository Debian. Ciò rende il processo di installazione semplice.
Esegui il comando seguente per installare nginx:
sudo apt install nginx
IL apt install
Il comando indica all'utilità di gestione dei pacchetti APT (una parte del sistema Debian) di installare il pacchetto NGINX.
Facoltativo: installare la versione completa di NGINX
NGINX offre a nginx-full
versione con moduli aggiuntivi non presenti nella versione standard. Se hai bisogno di più funzionalità, installa la versione completa di nginx:
sudo apt install nginx-full
Facoltativo: installare la versione NGINX-Extras
Per un set di funzionalità ancora più ampio, considera il nginx-extras
versione. Installare:
sudo apt install nginx-extras
Verifica dell'installazione di NGINX
Dopo l'installazione, assicurati che NGINX funzioni correttamente.
Controlla lo stato del servizio NGINX con quanto segue:
systemctl status nginx
NGINX funziona correttamente se l'output mostra "attivo (in esecuzione)". In caso contrario, l'output riporterà in dettaglio l'errore per la risoluzione dei problemi.
Se NGINX non è abilitato, utilizza:
sudo systemctl enable nginx --now
Configura il firewall UFW per Nginx
UFW, o Uncomplicated Firewall, fornisce un'interfaccia facile da usare per la gestione delle regole del firewall iptables. Non è installato su Debian per impostazione predefinita, ma puoi ottenerlo dai repository predefiniti. Se il tuo server ha accesso pubblico, dovresti impostare le regole UFW per la sicurezza.
Installa il firewall UFW
Se UFW non è già installato sul tuo sistema, puoi farlo eseguendo il seguente comando:
sudo apt install ufw
Abilita il firewall UFW
Una volta completata l'installazione, puoi abilitare UFW eseguendo il seguente comando:
sudo ufw enable
Le impostazioni predefinite di UFW bloccano tutte le connessioni in entrata e consentono tutte quelle in uscita. Ciò significa che blocca l'accesso non richiesto al sistema ma consente al tuo sistema di raggiungere il mondo esterno.
Elenco delle applicazioni installate
UFW utilizza i profili dell'applicazione, che sono insiemi di regole per applicazioni specifiche. Per visualizzare le applicazioni installate con profili UFW, esegui:
sudo ufw app list
Configurazione delle regole UFW per NGINX
A seconda delle tue esigenze, puoi configurare UFW per consentire connessioni NGINX tramite HTTP (porta 80), HTTPS (porta 443) o entrambi.
Solo per HTTP (porta 80):
sudo ufw allow 'Nginx HTTP'
Solo HTTPS (porta 443):
sudo ufw allow 'Nginx HTTPS'
Sia HTTP che HTTPS:
sudo ufw allow 'Nginx Full'
Verifica delle regole del firewall
Per verificare che le regole siano attive, controlla le regole del firewall attive:
sudo ufw status
Test della configurazione NGINX
Dopo aver configurato UFW, assicurati di poter vedere la pagina di destinazione NGINX. Nel tuo browser, vai all'indirizzo IP del tuo server:
http://your_server_ip
Oppure, per le configurazioni locali:
http://localhost
Supponiamo che tu veda la pagina predefinita di NGINX; la tua configurazione funziona. Ciò termina la configurazione del firewall per NGINX su Debian.
Crea blocchi server NGINX
Come gli host virtuali di Apache, i blocchi server NGINX ti consentono di ospitare più domini da un server. Ogni dominio ha le sue impostazioni di configurazione. Per questa guida, sostituisci "example.com" con il tuo nome di dominio effettivo.
Crea una directory per il tuo dominio
Configura una directory per il tuo dominio. Questa directory memorizzerà i file del tuo sito web:
sudo mkdir -p /var/www/example.com/
Assegna la proprietà alla directory Nginx
Assegna la proprietà della directory all'utente e al gruppo "www-data", che NGINX solitamente utilizza:
sudo chown -R www-data:www-data /var/www/example.com/
Crea una pagina HTML di test Nginx
Crea una pagina HTML di prova nella directory del tuo dominio per confermare la configurazione di NGINX:
sudo nano /var/www/example.com/index.html
Aggiungi il seguente codice HTML:
<html>
<head>
<title>Welcome to Example.com</title>
</head>
<body>
<h1>Success! The NGINX server block is working!</h1>
</body>
</html>
Dopo aver incollato il codice nell'editor nano, premi CTRL+O per salvare le modifiche e poi CTRL+X per uscire dall'editor.
Crea un blocco server NGINX per la pagina di test
Imposta un blocco server per il tuo sito web:
sudo nano /etc/nginx/sites-available/example.com.conf
Aggiungi la seguente configurazione:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
Questa configurazione indica a NGINX di ascoltare le connessioni in entrata sulla porta 80 per entrambi example.com
E www.example.com
. Assicurati di sostituire il root
direttiva con il percorso della directory creato in precedenza.
Abilita il blocco server NGINX tramite collegamento simbolico
Abilita il blocco del server creando un collegamento simbolico dalla directory sites-available alla directory sites-enabled:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Configurazione finale e prova di funzionamento
Infine, modificheremo il file di configurazione NGINX predefinito ed eseguiremo un test per garantire che tutto funzioni come previsto.
Modifica del file di configurazione NGINX
Apri il nginx.conf
file:
sudo nano /etc/nginx/nginx.conf
Cerca la linea server_names_hash_bucket_size 64;
all'interno del http {}
bloccalo e decommentalo.
Questa direttiva consente a NGINX di gestire nomi di dominio lunghi e un numero più significativo di nomi di server allocando più memoria a questo scopo. Tuttavia, fai attenzione a non impostare questo valore troppo alto, poiché potrebbe consumare più memoria del necessario.
Salva le modifiche e esci dall'editor premendo CTRL+O e CTRL+X.
Testa la tua configurazione NGINX
Prima di procedere e riavviare NGINX, è buona norma verificare che la sintassi di configurazione sia corretta. Eseguire il comando seguente per avviare un'esecuzione di prova:
sudo nginx -t
Se la configurazione è corretta, vedrai questo output:
nginx: la sintassi del file di configurazione /etc/nginx/nginx.conf è ok nginx: il test del file di configurazione /etc/nginx/nginx.conf ha avuto esito positivo
Questi messaggi indicano che la tua configurazione NGINX è stata convalidata con successo.
Verifica il blocco del tuo server
Per garantire che il blocco del server funzioni correttamente, apri il tuo dominio in un browser web. Dovresti vedere la pagina di test che conferma che il blocco del tuo server è attivo.
Comandi Nginx aggiuntivi
Migliorare la sicurezza dei file nel tuo server web
La sicurezza per file e cartelle sul tuo server web è fondamentale. Evitare diritti di accesso eccessivamente permissivi. Utilizza questi comandi per impostare le autorizzazioni corrette per tutti i file e le directory nella tua webroot.
Ricordarsi di sostituire /var/www/example.com/
con il tuo percorso webroot:
sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;
Questi comandi impostano i permessi di lettura ed esecuzione per le directory e i permessi di lettura-scrittura per i file per il proprietario. I gruppi e altri ottengono l'accesso di sola lettura. Modifica queste autorizzazioni in base alle esigenze dell'applicazione.
Sicurezza Nginx con il certificato SSL gratuito Let's Encrypt
L'utilizzo del protocollo HTTPS garantisce la sicurezza del server web. Let's Encrypt fornisce un certificato SSL gratuito. Installa il pacchetto cerbot con:
sudo apt install python3-certbot-nginx
Quindi, avvia la creazione del certificato:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com
Sostituisci con la tua email e il nome di dominio. Questo comando configura HTTPS con le funzionalità di sicurezza richieste.
Impostazione del rinnovo automatico del certificato
Crittografiamo i certificati della durata di 90 giorni. Imposta i rinnovi automatici con lo script Certbot. Testare il processo:
sudo certbot renew --dry-run
In caso di successo, aggiungi il comando di rinnovo a crontab:
sudo crontab -e
Includi questa riga per rinnovare ogni giorno a mezzanotte:
00 00 */1 * * /usr/sbin/certbot-auto renew
Registri del server Nginx
Monitora i log del tuo server per un server web ben mantenuto. Per impostazione predefinita, i log risiedono in /var/log/nginx
. Elencarli con:
cd /var/log/nginx && ls -l
I file di registro più rilevanti sono i access.log
E error.log
. Per monitorare i log in tempo reale, utilizzare il file tail -f
comando seguito dal percorso del log:
tail -f /var/log/nginx/access.log
Aggiorna Nginx
Prima di aggiornare il tuo server Nginx, è saggio creare un backup delle tue configurazioni attuali. Per eseguire il backup del file main nginx.conf
file, utilizzare il seguente comando:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf
Nei casi in cui hai ampiamente personalizzato la configurazione di Nginx, potresti voler eseguire il backup dell'intera directory Nginx:
sudo cp -r /etc/nginx/ /etc/nginx-bkup
Con il backup sicuro delle tue configurazioni, ora puoi procedere con l'aggiornamento di Nginx:
sudo apt update
sudo apt upgrade
Eseguire regolarmente il backup delle configurazioni è una buona pratica, soprattutto in configurazioni complesse.
Rimuovere Nginx
Se non hai più bisogno di Nginx sul tuo server, puoi rimuoverlo seguendo questi passaggi. Innanzitutto, assicurati che il servizio Nginx sia interrotto:
sudo systemctl disable nginx --now
Successivamente, rimuovi completamente il pacchetto Nginx:
sudo apt remove nginx
Potresti ancora trovare resti di configurazioni Nginx nel file /etc/nginx
directory. Per rimuoverli, utilizzare il comando:
sudo rm -R /etc/nginx/
Ricorda che questo rimuoverà tutti i tuoi file di configurazione personalizzati, quindi assicurati di avere tutto ciò di cui hai bisogno prima di procedere con questo passaggio.
Configura i parametri di rotazione dei log in Nginx
Nginx include una funzionalità di rotazione giornaliera dei log per impostazione predefinita. Puoi comunque personalizzare queste impostazioni in base alle tue esigenze.
Accedi al file di configurazione per la rotazione dei registri
Per modificare le impostazioni di rotazione dei log è necessario accedere al file di configurazione. Ecco come puoi aprirlo utilizzando l'editor di testo nano:
sudo nano /etc/nginx/logrotate.d/nginx
Una volta aperto il file, vedrai un contenuto simile al seguente. Modifica le direttive in questo file per adattarle alle tue esigenze di conservazione e rotazione dei log, soprattutto se utilizzi strumenti di monitoraggio come fail2ban.
File di configurazione della rotazione dei registri di esempio
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
Comprensione dei parametri di configurazione primari
All'interno di questa configurazione, gli amministratori di sistema in genere si concentrano su due impostazioni principali:
- Quotidiano: Questa impostazione imposta la frequenza di rotazione del registro. Anche se per impostazione predefinita è "giornaliero", puoi modificarlo in "settimanale" o "mensile". Tuttavia, le rotazioni giornaliere in genere semplificano la gestione dei log.
- Ruota 14: questo numero indica al sistema quanti file di registro conservare. Ad esempio, l'impostazione "14" conserva gli ultimi 14 registri. Se desideri archiviare solo una settimana di registri, imposta questo numero su "7".
Sebbene Nginx ti consenta di modificare altre impostazioni, apporta sempre le modifiche con attenzione. La modifica delle impostazioni senza comprenderne l'impatto può causare risultati imprevisti. Assicurati di modificare queste impostazioni in base alle tue esigenze senza causare problemi indesiderati.
Ricorda, non esiste un approccio unico per la gestione dei log. Valutare sempre l'ambiente e i requisiti specifici prima di apportare modifiche.
Pensieri conclusivi
In questa guida abbiamo illustrato la configurazione di Nginx su Debian, trattando l'installazione, la configurazione e l'ottimizzazione di base. Combinando l'efficienza di Nginx con la stabilità di Debian, hai creato una solida base per il tuo server web. Ricorda di mantenere aggiornato il tuo server ed esplorare ulteriori moduli Nginx per funzionalità migliorate. Se riscontri problemi, le forti comunità attorno a Debian e Nginx sono sempre ottime risorse. Grazie per seguirci e buon hosting!