Come installare Nginx su Debian 12, 11 o 10

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:

  1. 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.
  2. 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!

Joshua James
Seguimi
Ultimi post di Joshua James (vedi tutto)

Lascia un commento