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 come installare Nginx sul tuo server Ubuntu 20.04, regolare il firewall, gestire il processo Nginx e configurare blocchi server per ospitare più di un dominio da un singolo server.
Semplifica il deployment delle applicazioni con DigitalOcean App Platform . Effettua il deployment direttamente da GitHub in pochi minuti.
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 all’impostazione iniziale del server per Ubuntu 20.04 .
Vorrai anche opzionalmente aver 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
Poiché Nginx è disponibile nei repository predefiniti di Ubuntu, è possibile installarlo da questi repository utilizzando il sistema di pacchetti apt
.
Dato che questa è la nostra prima interazione con il sistema di pacchetti apt
in questa sessione, aggiorneremo il nostro indice locale dei pacchetti in modo da avere accesso agli elenchi dei pacchetti più recenti. Successivamente, possiamo installare nginx
:
Dopo aver accettato la procedura, apt
installerà Nginx e tutte le dipendenze necessarie sul tuo server.
Passaggio 2 – Regolazione del Firewall
Prima di testare Nginx, il software del firewall deve essere configurato per consentire l’accesso al servizio. Nginx si registra come servizio con ufw
durante l’installazione, rendendo semplice consentire l’accesso a Nginx.
Elenca le configurazioni dell’applicazione che ufw
sa gestire digitando:
Dovresti ottenere un elenco dei profili dell’applicazione:
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 consenta comunque il traffico che hai configurato. Al momento, dovremo solo 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 20.04 avvia Nginx. Il server web dovrebbe già essere attivo e in esecuzione.
Possiamo controllare il sistema di inizializzazione systemd
per assicurarci che il servizio sia 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 2020-04-20 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 correttamente. Tuttavia, il modo migliore per testarlo è effettivamente richiedere una pagina da Nginx.
Puoi accedere alla pagina predefinita di benvenuto di Nginx per confermare che il software funzioni 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 fornirà 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 benvenuto di Nginx:
Se sei su questa pagina, il tuo server è in esecuzione correttamente ed è pronto per essere gestito.
Passaggio 4 – Gestione del Processo Nginx
Ora che hai il tuo server web attivo e in esecuzione, vediamo alcuni comandi di gestione di base.
Per fermare il tuo server web, digita:
Per avviare il server web quando è fermo, 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 all’avvio del server. Se ciò non è ciò che desideri, puoi disabilitare questo comportamento digitando:
Per riattivare il servizio all’avvio, puoi digitare:
Ora hai 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 della 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 20.04 ha un blocco server abilitato per impostazione predefinita configurato per servire documenti da una directory su /var/www/html
. Sebbene ciò funzioni bene per un singolo sito, può diventare ingombrante 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 parent necessarie:
Successivamente, assegna la proprietà della directory con la variabile d’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, mentre concedono solo autorizzazioni di lettura ed esecuzione a gruppi e 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 codice 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/tuo_dominio
:
Incolla nel blocco di configurazione seguente, simile a quello predefinito, ma aggiornato per la nostra nuova directory e il 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 collegamento da esso alla directory sites-enabled
, che Nginx legge durante l’avvio:
Nota: Nginx utilizza una pratica comune chiamata link simbolici, o symlink, per tenere traccia di quali blocchi del server sono abilitati. Creare un symlink è simile a creare un collegamento sul disco, in modo che tu possa successivamente eliminare il collegamento dalla directory sites-enabled
mantenendo comunque il blocco del server in sites-available
se volessi abilitarlo.
Due blocchi del 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 di hash che può sorgere dall’aggiunta di nomi server aggiuntivi, è necessario regolare un singolo valore nel file /etc/nginx/nginx.conf
. Aprire il file:
Trovare la direttiva server_names_hash_bucket_size
e rimuovere il simbolo #
per decommentare la riga. Se si sta utilizzando nano, è possibile cercare rapidamente le parole nel file premendo CTRL
e w
.
Nota: Commentare le linee di codice – di solito mettendo #
all’inizio di una riga – è un altro modo per disabilitarle senza doverle effettivamente eliminare. Molti file di configurazione sono forniti con molte opzioni commentate in modo che possano essere abilitate o disabilitate, passando da codice attivo a documentazione.
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Salvare e chiudere il file quando si è finito.
Successivamente, testare per assicurarsi che non ci siano errori di sintassi in nessuno dei file Nginx:
Se non ci sono problemi, riavviare Nginx per abilitare le modifiche:
Nginx dovrebbe ora servire il tuo nome di dominio. Puoi testarlo navigando su http://tuo_dominio
, dove dovresti vedere qualcosa del genere:
Passaggio 6 – Conoscenza dei File e 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 in cui è possibile memorizzare 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 poi abilitata collegandola all’altra directory./etc/nginx/sites-enabled/
: La directory in cui vengono memorizzati i blocchi server abilitati per sito. 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 essere rifattorizzati in snippet.
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 desideri 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 20.04.
Per configurare HTTPS per il nome di dominio con un certificato SSL gratuito usando Let’s Encrypt, dovresti passare a Come proteggere Nginx con Let’s Encrypt su Ubuntu 20.04.
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04