Introduzione

Nginx Server Blocks consente di eseguire più di un sito Web su un singolo computer. Con Server Blocks è possibile specificare la radice del documento del sito (la directory che contiene i file del sito Web), creare una politica di sicurezza separata per ciascun sito, utilizzare certificati SSL diversi per ciascun sito e molto altro.

In questo articolo, forniremo istruzioni dettagliate su come configurare un server block di Nginx su Ubuntu 18.04.

Per una guida su come configurare Server Block multipli con Nginx su Ubuntu 18.04, leggere questo tutorial.

Prerequisiti

Assicurati di aver soddisfatto i seguenti prerequisiti prima di continuare con il tutorial:

  • Hai un nome di dominio che punta all'IP del tuo server pubblico. Useremo example.com.
  • Hai effettuato l'accesso come utente con privilegi sudo.

In alcuni tutorial potresti vedere Server Blocks essere indicato come a Virtual host. Il termine host virtuale è generalmente utilizzato per Apache.

Installare Nginx

Il pacchetto Nginx è incluso nei repository Ubuntu 18.04 predefiniti.

sudo apt update
sudo apt install nginx

Il servizio Nginx si avvierà automaticamente al termine del processo di installazione.. Per verificare il tipo di stato:

sudo systemctl status nginx

L'output sarà simile a questo:

 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 Mon 2019-11-18 22:54:20 CET; 9s ago

Configurare il firewall

Supponendo che si stia utilizzando UFW per gestire il firewall, è necessario aprire le porte HTTP (80) e HTTPS (443). Puoi farlo abilitando il profilo 'Nginx Full' che include le regole per entrambe le porte:

sudo ufw allow 'Nginx Full'

Per verificare il tipo di stato di Nginx:

sudo ufw status

L'output sarà simile al seguente:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

Creare la struttura della directory per il Server Block

La root del documento è la directory in cui i file del sito Web per un nome di dominio vengono archiviati e offerti in risposta alle richieste. È possibile impostare la root del documento in qualsiasi posizione desiderata.

Useremo la seguente struttura di directory:

/var/www/
├── domain1.com
│   └── public_html
├── domain2.com
│   └── public_html
├── domain3.com
│   └── public_html

Fondamentalmente, creeremo una directory separata per ogni dominio che vogliamo ospitare sul nostro server all'interno della directory /var/www. All'interno di ciascuna di queste directory, creeremo una directory public_html che memorizzerà i file del sito Web del dominio.

Creiamo la directory principale per il nostro dominio example.com:

sudo mkdir -p /var/www/example.com/public_html

A scopo di test, creeremo un file index.html all'interno della directory root dei documenti del dominio.

Apri il file/crea il file con il  tuo editor, in questo tutorial useremo nano:

sudo nano /var/www/example.com/public_html/index.html

Incolla le seguenti righe di codice:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to example.com</title>
  </head>
  <body>
    <h1>Success! example.com home page!</h1>
  </body>
</html>

In questo esempio, eseguiamo i comandi come utente sudo e i file e le directory appena creati sono di proprietà dell'utente root.

Per evitare problemi di autorizzazione, modificare la proprietà della directory root del documento di dominio sull'utente Nginx (www-data) con il comando chown:

sudo chown -R www-data: /var/www/example.com

Creare un blocco server

Per impostazione predefinita sui sistemi Ubuntu, i file di configurazione dei blocchi di server Nginx sono memorizzati nella directory /etc/nginx/sites-available, che sono abilitati tramite collegamenti simbolici alla directory /etc/nginx/sites-enabled/.

Apri il tuo editor e crea il seguente file di blocco del server:

sudo nano /etc/nginx/sites-available/example.com
server {
    listen 80;
    listen [::]:80;

    root /var/www/example.com/public_html;

    index index.html;

    server_name example.com www.example.com;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}

Puoi nominare il file di configurazione come preferisci, ma di solito è meglio usare il nome di dominio.

Per abilitare il nuovo file di blocco del server, creare un collegamento simbolico dal file alla directory sites-enabled, che viene letto da Nginx all'avvio:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Testare la configurazione di Nginx per la sintassi corretta:

sudo nginx -t

Se non ci sono errori, l'output sarà simile al seguente:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Riavvia il servizio Nginx per rendere effettive le modifiche:

sudo systemctl restart nginx

Infine, per verificare che il blocco server funzioni come previsto, apri il tuo indirizzo http://example.com nel browser che preferisci e vedrai il messaggi di esempio che abbiamo creato nel file index.html del nostro Server Block di Nginx.

Conclusione

Hai imparato a creare una configurazione di blocco server Nginx per ospitare un domino su un singolo server Ubuntu. Puoi ripetere i passaggi sopra descritti e creare blocchi server aggiuntivi per tutti i tuoi domini.

Se desideri proteggere il tuo sito Web con un certificato SSL LetsEncrypt gratuito, puoi consultare la seguente guida: Come installare Let's Encrypt per Nginx su Ubuntu 18.04 LTS.