Come installare Nginx su Ubuntu 20.04

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:

  1. sudo apt update
  2. sudo apt install 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:

  1. sudo ufw app list

Dovresti ottenere un elenco dei profili dell’applicazione:

Output
Available 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:

  1. sudo ufw allow 'Nginx HTTP'

Puoi verificare la modifica digitando:

  1. sudo ufw status

L’output indicherà quale traffico HTTP è consentito:

Output
Status: 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:

  1. systemctl status nginx
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:

  1. curl -4 icanhazip.com

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:

  1. sudo systemctl stop nginx

Per avviare il server web quando è fermo, digita:

  1. sudo systemctl start nginx

Per fermare e poi riavviare nuovamente il servizio, digita:

  1. sudo systemctl restart nginx

Se stai solo apportando modifiche alla configurazione, Nginx può spesso ricaricare senza interrompere le connessioni. Per farlo, digita:

  1. sudo systemctl reload nginx

Per impostazione predefinita, Nginx è configurato per avviarsi automaticamente all’avvio del server. Se ciò non è ciò che desideri, puoi disabilitare questo comportamento digitando:

  1. sudo systemctl disable nginx

Per riattivare il servizio all’avvio, puoi digitare:

  1. sudo systemctl enable nginx

Ora hai imparato i comandi di gestione di base e dovresti essere pronto a configurare il sito per ospitare più di un dominio.

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:

  1. sudo mkdir -p /var/www/your_domain/html

Successivamente, assegna la proprietà della directory con la variabile d’ambiente $USER:

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

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:

  1. sudo chmod -R 755 /var/www/your_domain

Successivamente, crea una pagina index.html di esempio utilizzando nano o il tuo editor preferito:

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

All’interno, aggiungi il seguente codice HTML di esempio:

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

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:

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

Incolla nel blocco di configurazione seguente, simile a quello predefinito, ma aggiornato per la nostra nuova directory e il nome di dominio:

/etc/nginx/sites-available/your_domain
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;
        }
}

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:

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

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 per your_domain e www.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:

  1. sudo nano /etc/nginx/nginx.conf

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.

/etc/nginx/nginx.conf
...
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:

  1. sudo nginx -t

Se non ci sono problemi, riavviare Nginx per abilitare le modifiche:

  1. sudo systemctl restart nginx

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 directory sites-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 directory sites-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