Introduzione
Nginx è uno dei server web più popolari al mondo ed è responsabile dell’hosting di alcuni dei siti più grandi e ad alto traffico su Internet. È una scelta leggera che può essere utilizzata sia come server web che come reverse proxy.
In questa guida, discuteremo su come installare Nginx sul tuo server Ubuntu 22.04, regolare il firewall, gestire il processo Nginx e configurare blocchi server per ospitare più di un dominio da un singolo server.
Effettua il deploy delle tue applicazioni da GitHub usando la Piattaforma App di DigitalOcean. Lascia che DigitalOcean si concentri sullo scalare la tua app.
Prerequisiti
Prima di iniziare questa guida, dovresti avere un utente regolare, non root, con privilegi sudo configurato sul tuo server. Puoi imparare come configurare un account utente regolare seguendo la nostra Guida alla configurazione iniziale del server per Ubuntu 22.04.
Vorrai anche facoltativamente avere registrato un nome di dominio prima di completare gli ultimi passaggi di questo tutorial. Per saperne di più su come configurare un nome di dominio con DigitalOcean, consulta la nostra Introduzione a DigitalOcean DNS.
Quando hai un account disponibile, accedi come utente non root per iniziare.
Passaggio 1 – Installazione di Nginx
Dato che Nginx è disponibile nei repository predefiniti di Ubuntu, è possibile installarlo da questi repository utilizzando il sistema di packaging apt
.
Dato che questa è la nostra prima interazione con il sistema di packaging apt
in questa sessione, aggiorneremo il nostro indice locale dei pacchetti in modo da avere accesso alle liste dei pacchetti più recenti. Successivamente, possiamo installare nginx
:
Premi Y
quando richiesto per confermare l’installazione. Se ti viene chiesto di riavviare eventuali servizi, premi INVIO
per accettare le impostazioni predefinite e continuare. apt
installerà Nginx e tutte le dipendenze necessarie sul tuo server.
Passaggio 2 – Regolazione del Firewall
Prima di testare Nginx, il software firewall deve essere configurato per consentire l’accesso al servizio. Nginx si registra come servizio con ufw
durante l’installazione, rendendo facile consentire l’accesso a Nginx.
Elencare le configurazioni dell’applicazione con cui ufw
sa come lavorare digitando:
Dovresti ottenere un elenco dei profili delle applicazioni:
OutputAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Come dimostrato dall’output, ci sono tre profili disponibili per Nginx:
- Nginx Full: Questo profilo apre sia la porta 80 (traffico web normale, non crittografato) che la porta 443 (traffico crittografato TLS/SSL)
- Nginx HTTP: Questo profilo apre solo la porta 80 (traffico web normale, non crittografato)
- Nginx HTTPS: Questo profilo apre solo la porta 443 (traffico crittografato TLS/SSL)
Si consiglia di abilitare il profilo più restrittivo che consentirà comunque il traffico che hai configurato. Per ora, avremo solo bisogno di consentire il traffico sulla porta 80.
Puoi abilitarlo digitando:
Puoi verificare la modifica digitando:
L’output indicherà quale traffico HTTP è consentito:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Passaggio 3 – Verifica del tuo server web
Alla fine del processo di installazione, Ubuntu 22.04 avvia Nginx. Il server web dovrebbe già essere attivo e in esecuzione.
Possiamo verificare con il sistema di inizializzazione systemd
se il servizio è in esecuzione digitando:
Output● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-03-01 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process
Come confermato da questa uscita, il servizio è stato avviato con successo. Tuttavia, il modo migliore per testarlo è richiedere effettivamente una pagina da Nginx.
Puoi accedere alla pagina predefinita di Nginx per confermare che il software sia in esecuzione correttamente navigando all’indirizzo IP del tuo server. Se non conosci l’indirizzo IP del tuo server, puoi trovarlo usando lo strumento icanhazip.com, che ti darà il tuo indirizzo IP pubblico come ricevuto da un’altra posizione su Internet:
Quando hai l’indirizzo IP del tuo server, inseriscilo nella barra degli indirizzi del tuo browser:
http://your_server_ip
Dovresti ricevere la pagina predefinita di Nginx:
Se sei su questa pagina, il tuo server sta funzionando correttamente ed è pronto per essere gestito.
Passaggio 4 – Gestione del processo Nginx
Ora che hai il tuo server web in funzione, vediamo alcuni comandi di gestione di base.
Per fermare il server web, digita:
Per avviare il server web quando è fermato, digita:
Per fermare e poi riavviare nuovamente il servizio, digita:
Se stai solo apportando modifiche alla configurazione, Nginx può spesso ricaricare senza interrompere le connessioni. Per farlo, digita:
Per impostazione predefinita, Nginx è configurato per avviarsi automaticamente quando il server si avvia. Se questo non è ciò che desideri, puoi disabilitare questo comportamento digitando:
Per riabilitare il servizio per l’avvio al boot, puoi digitare:
Hai ora imparato i comandi di gestione di base e dovresti essere pronto a configurare il sito per ospitare più di un dominio.
Passaggio 5 – Configurazione dei Blocchi del Server (Consigliato)
Quando si utilizza il server web Nginx, i blocchi del server (simili agli host virtuali in Apache) possono essere utilizzati per racchiudere i dettagli di configurazione e ospitare più di un dominio da un singolo server. Configureremo un dominio chiamato your_domain, ma dovresti sostituirlo con il tuo nome di dominio.
Nginx su Ubuntu 22.04 ha un blocco del server abilitato per impostazione predefinita che è configurato per servire documenti da una directory in /var/www/html
. Anche se questo funziona bene per un singolo sito, può diventare complicato se stai ospitando più siti. Invece di modificare /var/www/html
, creiamo una struttura di directory all’interno di /var/www
per il nostro sito your_domain, lasciando /var/www/html
al suo posto come directory predefinita da servire se una richiesta del client non corrisponde ad altri siti.
Crea la directory per your_domain come segue, utilizzando il flag -p
per creare eventuali directory genitore necessarie:
Successivamente, assegna la proprietà della directory con la variabile di ambiente $USER
:
Le autorizzazioni delle tue radici web dovrebbero essere corrette se non hai modificato il valore di umask
, che imposta le autorizzazioni predefinite dei file. Per garantire che le tue autorizzazioni siano corrette e consentano al proprietario di leggere, scrivere ed eseguire i file, concedendo solo le autorizzazioni di lettura ed esecuzione ai gruppi e agli altri, puoi inserire il seguente comando:
Successivamente, crea una pagina index.html
di esempio utilizzando nano
o il tuo editor preferito:
All’interno, aggiungi il seguente HTML di esempio:
Salva e chiudi il file premendo Ctrl+X
per uscire, quindi quando ti viene chiesto di salvare, premi Y
e poi Invio
.
Per consentire a Nginx di servire questo contenuto, è necessario creare un blocco server con le direttive corrette. Invece di modificare direttamente il file di configurazione predefinito, creiamo un nuovo file in /etc/nginx/sites-available/il_tuo_dominio
:
Incolla nel blocco di configurazione seguente, che è simile a quello predefinito, ma aggiornato per la nostra nuova directory e nome di dominio:
Nota che abbiamo aggiornato la configurazione root
alla nostra nuova directory e il server_name
al nostro nome di dominio.
Successivamente, abilitiamo il file creando un link da esso alla directory sites-enabled
, da cui Nginx legge durante l’avvio:
Nota: Nginx utilizza una pratica comune chiamata collegamenti simbolici, o symlink, per tenere traccia di quali dei tuoi blocchi server sono abilitati. Creare un symlink è come creare un collegamento sul disco, in modo che tu possa successivamente eliminare il collegamento dalla directory sites-enabled
mantenendo comunque il blocco server in sites-available
se desideri abilitarlo.
Due blocchi server sono ora abilitati e configurati per rispondere alle richieste in base alle loro direttive listen
e server_name
(puoi leggere di più su come Nginx elabora queste direttive qui):
your_domain
: Risponderà alle richieste peryour_domain
ewww.your_domain
.default
: Risponderà a tutte le richieste sulla porta 80 che non corrispondono agli altri due blocchi.
Per evitare un possibile problema di memoria del bucket hash che può sorgere aggiungendo ulteriori nomi server, è necessario regolare un singolo valore nel file /etc/nginx/nginx.conf
. Apri il file:
Trova la direttiva server_names_hash_bucket_size
e rimuovi il simbolo #
per decommentare la riga. Se stai utilizzando nano, puoi cercare rapidamente le parole nel file premendo CTRL
e w
.
Nota: Commentare le righe di codice – di solito inserendo #
all’inizio di una riga – è un altro modo per disabilitarle senza doverle effettivamente eliminare. Molti file di configurazione includono diverse opzioni commentate in modo che possano essere abilitate o disabilitate, alternando tra codice attivo e documentazione.
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Salva e chiudi il file quando hai finito.
Successivamente, verifica che non ci siano errori di sintassi in nessuno dei tuoi file Nginx:
Se non ci sono problemi, riavvia Nginx per abilitare le tue modifiche:
Adesso Nginx dovrebbe essere in grado di servire il nome di dominio. Puoi testarlo navigando su http://il_tuo_dominio
, dove dovresti vedere qualcosa del genere:
Passaggio 6 – Conoscere i File e le Directory Nginx Importanti
Ora che sai come gestire il servizio Nginx stesso, dovresti dedicare qualche minuto a familiarizzare con alcune directory e file importanti.
Contenuto
/var/www/html
: Il contenuto web effettivo, che per impostazione predefinita consiste solo nella pagina predefinita di Nginx che hai visto in precedenza, viene servito dalla directory/var/www/html
. Questo può essere modificato modificando i file di configurazione di Nginx.
Configurazione del server
/etc/nginx
: La directory di configurazione di Nginx. Tutti i file di configurazione di Nginx risiedono qui./etc/nginx/nginx.conf
: Il file di configurazione principale di Nginx. Questo può essere modificato per apportare modifiche alla configurazione globale di Nginx./etc/nginx/sites-available/
: La directory dove possono essere memorizzati i blocchi server per sito. Nginx non utilizzerà i file di configurazione trovati in questa directory a meno che non siano collegati alla directorysites-enabled
. Tipicamente, tutta la configurazione del blocco server viene fatta in questa directory e quindi abilitata collegandola all’altra directory./etc/nginx/sites-enabled/
: La directory dove sono memorizzati i blocchi server per sito abilitati. Tipicamente, questi vengono creati collegando i file di configurazione trovati nella directorysites-available
./etc/nginx/snippets
: Questa directory contiene frammenti di configurazione che possono essere inclusi altrove nella configurazione di Nginx. I segmenti di configurazione potenzialmente ripetibili sono buoni candidati per la refactoring in frammenti.
Registri del server
/var/log/nginx/access.log
: Ogni richiesta al tuo server web viene registrata in questo file di registro a meno che Nginx non sia configurato diversamente./var/log/nginx/error.log
: Qualsiasi errore di Nginx verrà registrato in questo registro.
Conclusioni
Ora che hai installato il tuo server web, hai molte opzioni per il tipo di contenuto da servire e le tecnologie che vuoi utilizzare per creare un’esperienza più ricca.
Se desideri creare uno stack di applicazioni più completo, dai un’occhiata all’articolo Come installare Linux, Nginx, MySQL, PHP (stack LEMP) su Ubuntu 22.04.
Per configurare HTTPS per il tuo nome di dominio con un certificato SSL gratuito usando Let’s Encrypt, dovresti passare a Come proteggere Nginx con Let’s Encrypt su Ubuntu 22.04.
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-22-04