Guida completa passo passo per installare e configurare un server web Nginx su un sistema Ubuntu 20.04
Nginx è un server Web proxy inverso open source e popolare disponibile su più piattaforme. Il software è stato sviluppato da Igor Sysoev come soluzione al problema C10K e rilasciato per la prima volta nel 2004. Il problema C10K è il problema di gestire diecimila client contemporaneamente, il che non era abbastanza facile nei primi anni 2000.
In questo tutorial, esaminiamo come installare e configurare Nginx su Ubuntu 20.04 LTS.
Prerequisiti
Un sistema con Ubuntu 20.04 installato e un sudo
utente. Inoltre, non è necessario disporre di altri server Web come Apache in esecuzione sulla porta 80 o 443.
Installazione di Nginx
Nginx è disponibile nel repository Ubuntu 20.04 e adatto
il gestore di pacchetti può essere utilizzato per installarlo. Quindi, per installare Nginx, apri il terminale usando ctrl+alt+t
e corri:
sudo apt update && sudo apt install nginx
L'installazione verrà completata presto e il demone Nginx si avvierà automaticamente in background. Quindi, per controllare lo stato di Nginx, esegui:
sudo systemctl status nginx
Dopo aver eseguito il comando sopra dovresti ottenere lo stato di Nginx come attivo (in esecuzione)
in verde come mostrato di seguito.
Configurazione di Ubuntu Firewall (UFW)
Per impostazione predefinita, le porte in uscita HTTP (80) e HTTPS (443) sono chiuse su Ubuntu 20.04. Inoltre, il demone firewall predefinito ufw
è disabilitato poiché tutte le porte sono chiuse.
Pertanto, per accedere al server Nginx da altri sistemi, dovrai abilitare il ufw
e configurarlo correttamente per consentire il traffico sulla porta 80
e 443
. Prima di abilitare ufw
, sappi che se stai configurando Nginx su un server remoto, aggiorna prima il ufw
regole per consentire ssh
eseguendo:
sudo ufw consenti ssh
Il comando sopra consente il ssh
accesso al server remoto, senza consentire ssh
sarai bloccato fuori dal server remoto.
Dopo aver abilitato ssh
accesso, è possibile abilitare il ufw
demone firewall eseguendo:
sudo ufw enable
Ora devi modificare le regole del firewall per consentire le porte HTTP e HTTPS in modo che Nginx possa servire il traffico web. Per modificare le regole, eseguire:
sudo ufw allow 'Nginx Full'
Nginx completo
consente sia le porte HTTP che HTTPS per il traffico in entrata e in uscita da tutti gli indirizzi IP.
Successivamente, verifica se le regole sono state aggiunte correttamente a ufw
firewall eseguendo il comando:
sudo ufw status
Il comando sopra mostrerà le regole che abbiamo aggiunto a ufw
demone del firewall.
Connessione al server Nginx
Ora che abbiamo installato Nginx e configurato ufw
per consentire il traffico web HTTP e HTTPS in entrata, dovresti essere in grado di accedere al server Nginx utilizzando l'indirizzo IP del server.
Se non conosci l'indirizzo IP del server, usa il comando seguente per recuperarlo facilmente.
indirizzo ip mostra eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Una volta ottenuto l'indirizzo IP, incollalo nel browser e premi invio.
//tuo-ip-server
Se tutto è stato configurato correttamente, dovresti essere in grado di vedere la pagina web "Benvenuto in nginx!".
File e directory Nginx
Ora che abbiamo installato e in esecuzione Nginx sul tuo server. Diamo un'occhiata ad alcuni degli importanti file e directory Nginx che dovrai utilizzare per configurare il tuo sito Web/app Web.
Contenuto del server web
Puoi configurare qualsiasi posizione che desideri come directory principale per il tuo blocco di server. L'HTML predefinito di Nginx è direttamente /var/www/html
, è dove si trova la pagina di "benvenuto" a cui abbiamo avuto accesso in precedenza.
Altre posizioni che vengono solitamente utilizzate come directory principale per i domini includono:
/casa//
/var/www/html/
/optare/
File di configurazione Nginx
Tutti i file di configurazione di Nginx si trovano in /etc/nginx
directory. Diamo un'occhiata ad alcuni dei file importanti di cui abbiamo bisogno per impostare un dominio di base.
/etc/nginx/nginx.conf
: Questo file contiene tutta la configurazione necessaria per eseguire Nginx./etc/nginx/siti-disponibili/
: Questa directory contiene tutta la configurazione del blocco server dei domini, ma attualmente non sono abilitati/distribuiti e quindi non accessibili dai client./etc/nginx/sites-enabled/
: Questa directory contiene i domini attualmente attivi/abilitati accessibili dai client. Per abilitare un dominio dobbiamo collegare il file di configurazione del dominio dasiti-disponibili
alsiti abilitati
directory./etc/nginx/snippets
/: In questa directory, possiamo memorizzare segmenti di configurazione potenzialmente riutilizzabili. Risparmia molto tempo nell'ambiente di produzione grazie al fatto che può rendere riutilizzabili segmenti/blocchi di configurazione.
Registri del server
Nginx registra gli eventi/attività e li memorizza nei file di registro nel /var/log/nginx
directory. Nginx registra le attività in questi file:
/var/log/nginx/access.log
: Questo file registra i client che hanno avuto accesso al server Nginx. I dettagli includono l'indirizzo IP del client, l'ora e la data, il browser utilizzato per accedere al server e il sistema operativo./var/log/nginx/error.log
: questo file registra gli errori riscontrati dal server Nginx durante l'esecuzione.
Quindi, in questa sezione, abbiamo brevemente esaminato alcuni importanti file e directory Nginx che sono sufficienti per iniziare.
Configurazione di blocchi server
Ora che abbiamo alcune conoscenze di base sui file e sul server Nginx, siamo pronti per configurare il nostro blocco server. I blocchi server sono simili agli host virtuali Apache.
Vedremo come creare un blocco server e per dimostrare che useremo esempio.com
come dominio nel processo di creazione.
Sostituisci esempio.com
con il tuo nome di dominio.
Prima di iniziare a configurare Server Blocks, è necessario creare una directory che funga da directory principale per il contenuto del sito web. Creiamo /var/www/example.com/html
directory per l'utilizzo del dominio mkdir
comando.
sudo mkdir -p /var/www/example.com/html
Il -P
opzione creerà tutte le directory padre necessarie. Cioè, creerà esempio.com
una directory principale per html
se non esiste.
Cambia la proprietà della directory con il $UTENTE
variabile d'ambiente:
sudo chown -R $USER:$USER /var/www/example.com/html
Quindi, crea un semplice index.html
file a cui si accederà quando si visita il dominio che si sta configurando. Questo è solo a scopo esplicativo.
nano /var/www/example.com/html/index.html
Incolla il seguente contenuto nel file che abbiamo appena creato sul server.
Benvenuto su example.com! io! L'esempio.com è accessibile!
premere ctrl+o
per scrivere e salvare il index.html
file e quindi premere ctrl+x
uscire nano
editore.
Ora finalmente possiamo passare alla creazione di un blocco server, in modo che Nginx possa servire il index.html
quando qualche utente va a esempio.com
. Quindi per creare un blocco server dobbiamo creare un file di configurazione denominato esempio.com
in siti-disponibili
directory. Per farlo, usiamo nano ed eseguiamo:
sudo nano /etc/nginx/sites-available/example.com
Quindi, digita o copia/incolla la seguente configurazione. Quindi premere ctrl+o
e invio per scrivere e salvare. Allo stesso modo, premere ctrl+x
per chiudere l'editor nano.
server { ascolta 80; ascolta [::]:80; nome_server esempio.com www.esempio.com; root /var/www/example-domain.com/html; indice index.html; posizione / { try_files $uri $uri/ =404; } }
La configurazione di cui sopra è simile alla configurazione di blocco del server predefinita, l'abbiamo cambiata radice
istruzione per puntare alla nostra nuova directory principale e cambiato il nome del server
al nostro nome di dominio. Mentre il Posizione{}
L'istruzione funge da istruzione catch di errore se i file non vengono trovati e visualizza l'errore 404 al client.
Successivamente, possiamo abilitare il nostro blocco server in modo che Nginx serva esempio.com
pagine web. Per abilitare il nostro blocco server dobbiamo creare un collegamento simbolico di esempio.com
file da siti-disponibili
a siti abilitati
directory. Per farlo, esegui:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled
Verrà creato un collegamento in abilitato per il sito
directory e ora esempio.com
dovrebbe essere abilitato. Ora abbiamo due blocchi server abilitati sul nostro server Nginx che risponderanno alla richiesta in base a Ascoltare
e nome_sever
direttive salvate in esempio.com
configurazione del blocco del server.
Per verificare se tutti i file di configurazione sono corretti e non sono presenti errori di sintassi, eseguire:
sudo nginx -t
Ora, finalmente riavvia Nginx per applicare le modifiche eseguendo il seguente comando:
sudo systemctl riavvia nginx
Nginx inizierà a servire il tuo blocco server ora, puoi andare su //tuo-nome-dominio
e guarda la tua pagina web dal vivo.
Nota: Affinché la sezione precedente funzioni, dovrai impostare il tuo dominio e sostituirlo esempio.com
con il proprio nome di dominio. Inoltre, dovrai configurare il DNS affinché il tuo dominio punti all'indirizzo IP del tuo server Nginx.
Per concludere, abbiamo visto come installare Nginx, configurare ufw
per consentire l'accesso remoto al server Nginx, connesso a Nginx in remoto, ha acquisito familiarità con alcuni file e directory di base di Nginx e ha imparato come configurare un blocco server.
Per sapere e saperne di più su Nginx, potresti voler vedere Nginx wiki.