NGINX è un software server HTTP gratuito e open source. Oltre alle sue capacità di server HTTP, NGINX può anche fungere da server proxy per la posta elettronica (IMAP, POP3 e SMTP) e un proxy inverso e bilanciatore di carico per server HTTP, TCP e UDP. L'obiettivo dietro NGINX era quello di creare il server web più veloce in circolazione e mantenere quell'eccellenza è ancora un obiettivo centrale del progetto Nginx. NGINX batte costantemente Apache e altri server nei benchmark che misurano le prestazioni dei server Web ed è ora il server Web utilizzato più popolare secondo W3Tech.
Nel seguente tutorial imparerai a installare Nginx su Ubuntu 20.04 LTS usando il repository Ubuntu predefinito o il PPA alternativo di Ondřej Surý con un certificato TLS/SSL gratuito da Let's Encrypt.
Prerequisiti
- Sistema operativo consigliato: Ubuntu 20.04 o versioni successive
- 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 sudo. Tuttavia, supponiamo di dover fornire account aggiuntivi sudo/root access. In tal caso, devi avere accesso alla password root per usare il comando su oppure visita il nostro tutorial su Come aggiungere un utente a Sudoer su Ubuntu.
Installa Nginx
Metodo 1. Installa Nginx Stable dal repository di Ubuntu
Il primo metodo consiste nell'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 di Ubuntu.
Per installare Nginx, esegui il seguente comando.
sudo apt install nginx
Esempio di output:
Digita "Y" quindi premere il "INVIO TASTO" 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 Nginx Stable o Mainline più recente da Ondřej Surý PPA
In alternativa, invece di installare la build stabile Nginx predefinita dal repository di Ubuntu 20.04, puoi installare Nginx Stable o Mainline usando il PPA da Ondřej Surý il manutentore PHP di Debian.
Installa uno dei seguenti PPA con il seguente comando:
Installa l'ultimo Nginx (STABILE):
sudo add-apt-repository ppa:ondrej/nginx-stable -y && sudo apt update
Installa l'ultimo 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:
Digita "Y" quindi premere il "INVIO TASTO" 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 . Nota, l'esempio di tutorial installato Nginx Mainline:
apt-cache policy nginx
Esempio di output per Nginx Mainline :
Tieni presente che ti potrebbe essere richiesto di mantenere o sostituire il tuo /etc/nginx/ esistente nginx.conf file di configurazione durante l'installazione se in precedenza era stato installato Nginx. Si consiglia di conservare il file di configurazione corrente premendo (n) . Verrà eseguita una copia indipendentemente dalla versione del manutentore e potrai verificarla anche in futuro.
Noterai che in questa versione saranno disponibili moduli aggiuntivi, in particolare il supporto brotli. Per installare brotli , segui i passaggi seguenti.
Apri il tuo nginx.conf file di configurazione:
nano /etc/nginx/nginx.conf
Ora aggiungi le righe aggiuntive prima in 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;
Il livello_comp_brotli può essere impostato tra 1 (minimo) e 11 (il massimo) . 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, verifica 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 rendi attive le modifiche riavviando il tuo server:
sudo systemctl restart nginx
sudo systemctl status nginx
Esempio di output:
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 seguenti per configurare UFW per Nginx.
Se UFW non è installato, reinstallare il firewall utilizzando il comando seguente:
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 uscite sono consentite.
Successivamente, scopri quali applicazioni hai installato inserendo quanto segue.
sudo ufw app list
Esempio di output (notare 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)" era 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, assicurati di poter vedere la pagina di destinazione di Nginx nel tuo browser Internet.
http://your_server_ip
Se tutto funziona bene, dovresti arrivare alla seguente pagina:
Configura il 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 probabilmente dovrai installare il pacchetto curl sul tuo 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 sostituirlo con il tuo nome di dominio .
Quando installi Nginx, viene creato con una directory www preinstallata. La posizione si trova in /var/www/html/ .
Innanzitutto, crea la directory per example.com , come segue, utilizzando il flag "-p" per creare le directory principali 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
In terzo luogo, assegna le autorizzazioni della directory, in modo che il proprietario legga, scriva ed esegua i file concedendo solo 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 sia operativo.
nano /var/www/your_domain/html/index.html
All'interno del nano editor e del nuovo file che hai creato. Inserisci quanto segue.
<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 quindi esci da CTRL+X .
Crea blocco server Nginx
Ora creerai il blocco server per il tuo sito web. Creeremo un nuovo blocco di 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 nel nome/posizione della directory principale che hai creato.
Abilita Blocco server Nginx
Per abilitare i blocchi del server Nginx, devi collegare i file di configurazione dai siti disponibili ai siti abilitati nella tua 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 e test di esecuzione
Nella fase finale, dovrai aprire il tuo nginx.conf predefinito 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 con l'aggiunta di server aggiuntivi.
Quindi, testa il tuo Nginx per assicurarti che funzioni prima di riavviare 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 avvengano.
sudo systemctl restart nginx
Ora apri il tuo Browser Internet e digita il nome di dominio del server . Dovresti vedere che il blocco del tuo server è attivo.
Proteggi Nginx con il certificato gratuito SSL Let's Encrypt
Idealmente, vorresti eseguire il tuo Nginx su HTTPS utilizzando un certificato SSL . Il modo migliore per farlo è utilizzare Let's Encrypt, 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 [email protected] -d www.example.com
Questa è la configurazione ideale che include i reindirizzamenti HTTPS 301 forzati, l'intestazione Strict-Transport-Security e la pinzatura OCSP. Assicurati solo di adattare l'e-mail e il nome di dominio alle tue esigenze.
Ora il tuo URL sarà HTTPS://www.example.com invece di HTTP://www.example.com .
Nota, se utilizzi il vecchio URL HTTP , reindirizzerà automaticamente a HTTPS .
Come accedere ai registri del server Nginx
Directory dei registri 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 comando seguente.
Innanzitutto, vai alla directory dei registri ed elenca i file:
cd /var/log/nginx && ls -l
Dovresti trovare i seguenti file di accesso e di errore:
Registro accessi:
/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 i -n 30 flag .
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 del registro e lo configura come predefinito, ovvero ruotare ogni giorno. Puoi 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. Principalmente puoi cambiare il numero di registri da conservare o passare da giornaliero a settimanale. Questo dovrebbe essere lasciato per impostazione predefinita a meno che tu non abbia requisiti di registro 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 ogni giorno, 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, almeno, di nginx.conf file. Puoi farlo con il seguente comando.
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, esegui l'aggiornamento.
sudo apt upgrade
Potrebbe esserti richiesto durante un aggiornamento o un'installazione, ma farlo manualmente in anticipo è piuttosto essenziale. Per configurazioni Nginx di grandi dimensioni di più siti, il backup su qualcosa come Github o Gitlab sarebbe ancora più vantaggioso.