Come installare Nginx con Let's Encrypt TLS/SSL su Ubuntu 20.04

Nginx è un software per server HTTP gratuito e open source. Oltre alle sue capacità di server HTTP, NGINX può anche funzionare come server proxy per e-mail (IMAP, POP3 e SMTP) e proxy inverso e bilanciamento del carico per server HTTP, TCP e UDP. L'obiettivo di NGINX era creare il server web più veloce in circolazione e mantenere l'eccellenza è ancora un obiettivo centrale del progetto Nginx. NGINX batte costantemente Apache e altri server nei benchmark che misurano le prestazioni del server Web ed è ora il server Web più utilizzato secondo W3Tech.

Nel seguente tutorial imparerai a installare Nginx su Ubuntu 20.04 LTS utilizzando il repository Ubuntu predefinito o il PPA alternativo di Ondřej Surý con un certificato TLS/SSL gratuito di Let's Encrypt.

Prerequisiti

  • Sistema operativo consigliato: Ubuntu 20.04 oro superiore
  • Account utente: Un account utente con accesso sudo o root.

Aggiornamento del sistema operativo

Aggiorna il tuo Ubuntu sistema operativo per assicurarsi che tutti i pacchetti esistenti siano aggiornati:

sudo apt update && sudo apt upgrade

Accesso root o sudo

Per impostazione predefinita, l'account creato con Ubuntu dava lo stato di sudo. Tuttavia, supponiamo che tu debba fornire account aggiuntivi sudo/root access. In tal caso, devi avere accesso al password di root usare il comando su o visita il nostro tutorial su Come aggiungere un utente a Sudoers su Ubuntu.


pubblicità


Installa Nginx

Metodo 1. Installa Nginx Stable dal repository Ubuntu

Il primo metodo è installare Nginx dai repository predefiniti di Ubuntu e queste versioni si sono dimostrate stabili e sicure. Se è necessario eseguire un server Web primario o un proxy inverso, è spesso consigliabile installare i pacchetti del repository Ubuntu.

Per installare Nginx, esegui il seguente comando.

sudo apt install nginx

Esempio di output:

Come installare Nginx con Let's Encrypt TLS/SSL su Ubuntu 20.04

Tipologia "S" quindi premere il tasto "TASTO INVIO" per procedere con l'installazione.

Quindi, verifica la build della versione e se l'installazione è andata a buon fine.

sudo nginx -v

Esempio di output:

nginx version: nginx/1.18.0

Metodo 2. Installa l'ultimo Nginx stabile o principale da Ondřej Surý PPA

In alternativa, invece di installare la build stabile di Nginx predefinita dal repository di Ubuntu 20.04, è possibile installare Nginx Stable o Mainline utilizzando il PPA di Ondřej Surý, il manutentore di PHP per Debian.

Installa uno dei seguenti PPA con il seguente comando:

Installa l'ultimo Nginx (STABLE):

sudo add-apt-repository ppa:ondrej/nginx-stable -y && sudo apt update

Installa l'ultima versione di Nginx (MAINLINE):

sudo add-apt-repository ppa:ondrej/nginx-mainline -y && sudo apt update

Ora che hai installato il PPA e aggiornato l'elenco dei repository, installa Nginx con quanto segue:

sudo apt install nginx-core nginx-common nginx nginx-full

Esempio di output:

Come installare Nginx con Let's Encrypt TLS/SSL su Ubuntu 20.04

Tipologia "S" quindi premere il tasto "TASTO INVIO" per procedere con l'installazione.

Quindi, verifica la build della versione e se l'installazione è andata a buon fine.

sudo nginx -v

Esempio di output (dalla linea principale):

nginx version: nginx/1.18.0

Ora controlla per assicurarti che l'ultimo Nginx dal repository Ondřej Surý sia stato installato utilizzando il comando apt-cache policy. Notare la esempio di tutorial linea principale Nginx installata:

apt-cache policy nginx

Esempio di output per Nginx Mainline:

Come installare Nginx con Let's Encrypt TLS/SSL su Ubuntu 20.04

Tieni presente che potrebbe esserti richiesto di mantenere o sostituire il tuo esistente / etc / nginx /nginx.conf file di configurazione durante l'installazione se Nginx era installato in precedenza. Si consiglia di conservare il file di configurazione corrente premendo (N). Verrà fatta una copia indipendentemente dalla versione del manutentore, e puoi anche verificarlo in futuro.

Noterai che in questa versione saranno disponibili moduli aggiuntivi, in particolare il supporto brotli. Installare brotli, procedi come indicato di seguito.

Apri il tuo nginx.conf file di configurazione:

nano /etc/nginx/nginx.conf

Ora aggiungi le righe aggiuntive prima nel HTTP{} sezione:

brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
   application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
   application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
   font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
   image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;

brotli_comp_level può essere impostato tra 1 (minimo) che collaborano con noi, attingono direttamente dalla storia e dalla tradizione veneziana 11 (più alto). In genere, la maggior parte dei server si trova nel mezzo, ma se il tuo server è un mostro, imposta su 11 e monitora i livelli di utilizzo della CPU.

Quindi, prova per assicurarti che le modifiche funzionino correttamente prima di renderle attive:

sudo nginx -t

Se le modifiche funzionano correttamente, dovresti vedere quanto segue:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Ora apporta le modifiche in tempo reale riavviando il tuo server:

sudo systemctl restart nginx
sudo systemctl status nginx

Esempio di output:

Come installare Nginx con Let's Encrypt TLS/SSL su Ubuntu 20.04

Configurazione UFW

Per impostazione predefinita, UFW è installato su Ubuntu 20.04. Se utilizzi UFW o desideri una visione più chiara dell'esecuzione di un firewall, utilizza le informazioni di seguito per configurare UFW per Nginx.

Se UFW non è installato, reinstallare il firewall utilizzando il seguente comando:

sudo apt install ufw -y

Quindi, abilita UFW con il seguente comando.

sudo ufw enable

Per impostazione predefinita, tutte le connessioni in entrata sono ora bloccate e tutte le connessioni in uscita sono consentite.

Quindi, scopri quali applicazioni hai installato inserendo quanto segue.

sudo ufw app list

Output di esempio (si noti che verrà visualizzato un elenco completo anche di altre applicazioni):

 Available applications:
   Nginx Full
   Nginx HTTP
   Nginx HTTPS

Successivamente, puoi abilitare Nginx in HTTP (Porta 80), HTTPS (Porta 443) o Completo, incluse tutte le opzioni.

HTTP (porta 80):

sudo ufw allow 'Nginx HTTP'

HTTP (porta 443):

sudo ufw allow 'Nginx HTTPS'

HTTP e HTTPS (completo):

sudo ufw allow 'Nginx FULL'

Nel tutorial, “Nginx (Completo)” è stato abilitato.

Esempio di output:

 Rules updated
 Rules updated (v6)

Conferma che le regole del firewall sono attive con il seguente comando.

sudo ufw status

Vedrai le regole elencate nell'output.

 Status: active
 To                         Action      From
 --                         ------      ----
 Nginx Full                 ALLOW       Anywhere                  
 Nginx Full (v6)          ALLOW       Anywhere (v6) 

Dopo aver configurato UFW, controlla per assicurarti di poter vedere la pagina di destinazione di Nginx nel tuo browser Internet.

http://your_server_ip

Se tutto funziona bene, dovresti atterrare alla seguente pagina:

Come installare Nginx con Let's Encrypt TLS/SSL su Ubuntu 20.04

pubblicità


Configura server Nginx

Dovrai avere l'indirizzo IP del server pronto per la configurazione. Il modo più semplice per farlo è con quanto segue.

Trova l'indirizzo IP del server

Dovrai avere l'indirizzo IP del server pronto per la configurazione. Il modo più semplice per farlo è con quanto segue.

curl -4 icanhazip.com

Esempio di output:

XXX.XXX.XXX.XXX IP address

Se si verifica un errore, è molto probabile che sia necessario installare il pacchetto curl sul sistema. Esegui rapidamente questo comando:

sudo apt install curl -y

Imposta la directory di origine del sito

Nginx blocchi del server (simile agli host virtuali in Apache) può incapsulare i dettagli di configurazione e ospitare più di un dominio da un singolo server. Nel tutorial, imposterai un dominio chiamato example.com, ma dovresti sostituiscilo con il tuo nome di dominio.

Quando installi Nginx, viene creato con una directory www preinstallata. La posizione si trova a / Var / www / html /.

Innanzitutto, crea la directory, per example.com, come segue, usando il flag "-p" per creare tutte le directory padre necessarie:

sudo mkdir -p /var/www/example.com/html

In secondo luogo, dovrai assegnare il proprietario della directory.

sudo chown -R $USER:$USER /var/www/your_domain/html

Terzo, assegnare le autorizzazioni della directory, in modo che il proprietario legga, scriva ed esegua i file concedendo solo le autorizzazioni di lettura ed esecuzione a gruppi e altri. Puoi inserire il seguente comando:

sudo chmod -R 755 /var/www/your_domain

Imposta pagina HTML di prova

In quarto luogo, crea una pagina di prova che utilizzerai per confermare che il tuo server Nginx è operativo.

nano /var/www/your_domain/html/index.html

All'interno del nano editor e del nuovo file che hai creato. Digita il seguente.

<html>
 <head>
  <title>Welcome to your_domain!</title>
 </head>
 <body>
   <h1>Success!  The your_domain server block is working!</h1>
 </body>
</html>

Salva il file CTRL+O, poi esci CTRL + X.

Crea blocco server Nginx

Ora creerai il blocco server per il tuo sito web. Creeremo un nuovo blocco server come segue.

sudo nano /etc/nginx/sites-available/your_domain.conf

Puoi incollare il seguente codice di esempio nel blocco. Questo è solo un Esempio solo HTTP per i test di base.

server {
 listen 80;
 listen [::]:80;

 root /var/www/your_domain/html;

  index index.html index.htm index.nginx-debian.html;
  server_name your_domain www.your_domain;

 location / {
  try_files $uri $uri/ =404;
 }
}

L'esempio mostra che il tuo server sta ascoltando due nomi di server, “tuo_dominio” sulla porta 80.

Dovrai cambiare la directory principale con il nome/posizione della directory principale che crei.

Abilita blocco server Nginx

Per abilitare i blocchi del server Nginx, è necessario collegare i file di configurazione dai siti disponibili ai siti abilitati nella directory Nginx. Questo può essere fatto con il comando ln -s come segue.

sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/

Configurazione finale ed esecuzione di prova

Nella fase finale, dovrai aprire il tuo default nginx.conf file.

sudo nano /etc/nginx/nginx.conf

E decommenta la riga seguente.

server_names_hash_bucket_size 64;

La dimensione del bucket di hash del nome del server viene modificata poiché a volte sorgono problemi dall'aggiunta di server aggiuntivi.

Quindi, prova il tuo Nginx per assicurarti che funzioni prima di riavviarlo correttamente.

sudo nginx -t

L'output dovrebbe essere se non ci sono errori nella sintassi:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Se hai il seguente output ok, riavvia il server Nginx affinché le modifiche abbiano luogo.

sudo systemctl restart nginx

Ora apri il tuo Browser Internet e digita il nome del dominio del server. Dovresti vedere che il tuo blocco server è attivo.

Come installare Nginx con Let's Encrypt TLS/SSL su Ubuntu 20.04

Proteggi Nginx con il certificato gratuito SSL di Let's Encrypt

Idealmente, vorresti eseguire il tuo Nginx su HTTPS utilizzando un certificato SSL. Il modo migliore per farlo è usare Criptiamo, un'autorità di certificazione gratuita, automatizzata e aperta gestita dal Internet Security Research Group (ISRG) senza scopo di lucro.

Innanzitutto, installa il pacchetto certbot come segue:

sudo apt install python3-certbot-nginx -y

Una volta installato, esegui il seguente comando per avviare la creazione del tuo certificato:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com

Questa è la configurazione ideale che include reindirizzamenti forzati HTTPS 301, intestazione Strict-Transport-Security e Stapling OCSP. Assicurati solo di adattare l'e-mail e il nome di dominio alle tue esigenze.

Ora il tuo URL sarà HTTPS://www.esempio.com invece di HTTP://www.esempio.com.

Nota, se usi il vecchio URL HTTP, reindirizzerà automaticamente a HTTPS.


pubblicità


Come accedere ai log del server Nginx

Directory dei log di Nginx

Per impostazione predefinita, tutti i registri di accesso/errore di NGINX, a meno che non siano stati modificati, si trovano nella directory dei registri, che può essere visualizzata dal seguente comando.

Per prima cosa, vai alla directory dei log ed elenca i file:

cd /var/log/nginx && ls -l

Dovresti trovare i seguenti file di accesso e di errore:

Registro di accesso:

/var/log/nginx/access.log

Registro errori:

/var/log/nginx/error.log

Per visualizzare i log in tempo reale nel tuo terminale usando il comando sudo tail -f /location/of/log path.

Esempio:

sudo tail -f /var/log/nginx/access.log

Un'altra opzione è stampare l'ultima quantità X di righe. Ad esempio, X viene sostituito con 30 per stampare 30 righe aggiungendo il -n 30 bandiere.

sudo tail -f /var/log/nginx/access.log -n 30

Questi sono solo alcuni esempi di lettura dei log.

Come configurare la rotazione del registro di Nginx

Nginx installa automaticamente la rotazione dei log e la configura come predefinita, ovvero la rotazione giornaliera. È possibile modificare queste impostazioni accedendo al file come mostrato di seguito.

sudo nano /etc/nginx/logrotate.d/nginx

Successivamente, vedrai la stessa struttura di file se non simile. Puoi modificare i contenuti qui. Per lo più è possibile modificare il numero di registri da conservare o passare da giornalieri a settimanali. Questo dovrebbe essere lasciato di default a meno che tu non abbia requisiti di log specifici per software come il monitoraggio fail2ban o simili.

/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
}

Le impostazioni principali che probabilmente vorrai modificare sono le seguenti:

  • Quotidiano - Questo può essere cambiato in Settimanale, Mensile. Questo dovrebbe essere mantenuto giornalmente, altrimenti sarà difficile passare attraverso il file di registro.
  • Ruota 14 – Questo è il numero di log da conservare e rimuovere, quindi al massimo ci sono solo 14 log, se vuoi conservare solo 7 giorni di log cambialo in 7.

Si consiglia di non toccare altre impostazioni a meno che tu non sappia cosa stai facendo.

Come aggiornare Nginx

Nginx verrà aggiornato per impostazione predefinita quando una nuova versione raggiunge i repository. Prima di eseguire l'aggiornamento, è sempre consigliabile eseguire il backup della directory Nginx o, per lo meno, del nginx.conf file. Puoi fare entrambe le cose con il seguente comando.

Eseguire il backup di nginx.conf (altamente consigliato):

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

Se preferisci, esegui il backup dell'intera cartella Nginx:

sudo cp /etc/nginx/ /etc/nginx-bkup

Quindi, esegui il comando di aggiornamento standard.

sudo apt update

Se è disponibile un aggiornamento, eseguire l'aggiornamento.

sudo apt upgrade 

Potrebbe esserti richiesto durante un aggiornamento o un'installazione, ma farlo manualmente in anticipo è piuttosto essenziale. Per grandi configurazioni Nginx di più siti, il backup su qualcosa come Github o Gitlab sarebbe ancora più vantaggioso.


pubblicità


Commenti e Conclusione

Nel tutorial, hai imparato a installare e configurare una configurazione Nginx di base sul tuo dominio su Ubuntu 20.04 LTS e creare un certificato SSL gratuito utilizzando Let's Encrypt. Nel complesso, Nginx è il software di applicazione Web più utilizzato e popolare ora, con ogni mese e anno che superano prendendo più quote di mercato da Apache.

Alcuni nuovi contendenti stanno iniziando a spuntare, come Openlitespeed ma date queste altre applicazioni web, per ora, concentrati su cose specifiche come WordPress. Nginx sarà l'applicazione web di riferimento per un po' di tempo.

Lascia un tuo commento