Prerequisiti

Segui questa guida per installare Nginx - MySQL - PHP: Come installare LEMP Nginx MySQL PHP su Ubuntu 18.04 LTS

Configurazione Server Blocks

Di default Nginx Ubuntu ha un solo server block. È configurato per utilizzare i file nella directory /var/www/html.

Abbiamo bisogno di directory aggiuntive se vogliamo configurare più siti.

Creiamo una struttura all'interno di /var/www per ciascuno dei nostri siti. Il contenuto Web verrà inserito in una directory html.

Da console:
sudo mkdir -p /var/www/esempio.com/html
sudo mkdir -p /var/www/test.com/html

Possiamo utilizzare la variabile $USER per assegnare i permessi necessari all'account al quale siamo attualmente connessi (assicurati di non aver effettuato l'accesso come root). Questo ci permetterà di creare o modificare facilmente il contenuto in questa directory:
sudo chown -R $USER:$USER /var/www/esempio.com/html
sudo chown -R $USER:$USER /var/www/test.com/html

Assicuriamoci che i permessi siano corretti:
sudo chmod -R 755 /var/www

Creazione pagina di esempio

Creiamo un file index.html per il primo dominio:
nano /var/www/esempio.com/html/index.html

Incolliamo il seguente codice di esempio:

<html>
    <head>
        <title>Benvenuto, esempio.com</title>
    </head>
    <body>
        <h1>Il dominio esempio.com è funzionante!</h1>
    </body>
</html>

Salvare e chiudere il file.

Creiamo la seconda pagina di esempio, copiando quella del primo nell'altra root directory.
cp /var/www/esempio.com/html/index.html /var/www/test.com/html/

Apriamo il file:
nano /var/www/test.com/html/index.html

Modifichiamo il file:

<html>
    <head>
        <title>Benvenuto, test.com</title>
    </head>
    <body>
        <h1>Il dominio test.com è funzionante!</h1>
    </body>
</html>

Salvare e chiudere il file.

Creare un nuovo Server block per Nginx

Come detto precedentemente Nginx di default utilizza un solo Server block. Quindi copiamo quello esistente per poi modificarlo:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/esempio.com

Aprire il file:
sudo nano /etc/nginx/sites-available/esempio.com

Eliminare l'opzione default_server, poiché solo un Server block può utilizzare questa opzione.

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        . . .
}

Quindi modificare in questo modo:

server {
        listen 80;
        listen [::]:80;
        . . .
}

Modificare anche la root principale root /var/www/esempio.com/html;
Il risultato sarà questo:

server {
        listen 80;
        listen [::]:80;

        root /var/www/esempio.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name esempio.com www.esempio.com;

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

Creare il secondo Server block

Copiamo il file creato precedentemente e cambiamo i parametri necessari:
sudo cp /etc/nginx/sites-available/esempio.com /etc/nginx/sites-available/test.com

Aprire il file:
sudo nano /etc/nginx/sites-available/test.com

Modificarlo in questo modo:

server {
        listen 80;
        listen [::]:80;

        root /var/www/test.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name test.com www.test.com;

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

Abilitare i Server Blocks

Abilitiamo i nuovi server blocks creando dei link simbolici vero la sites-enabled directory, che Nginx utilizza durante la fase di avvio.

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

Per evitare problemi di memoria dovuti all'aggiunta di nuovi server blocks modifichiamo un parametro all'interno di nginx.conf

sudo nano /etc/nginx/nginx.conf

Cercare e decommentare il seguente parametro eliminando il simbolo # prima dell'opzione server_names_hash_bucket_size.

http {
    . . .

    server_names_hash_bucket_size 64;

    . . .
}

Verifichiamo se le configurazioni sono corrette:
sudo nginx -t

Se non avete riscontrato problemi riavviate nginx:
sudo systemctl restart nginx

Modificare il file hosts locale per un test (opzionale)

Se non hai utilizzato i nomi dominio di tua proprietà e invece hai utilizzato valori fittizi, puoi modificare la configurazione del tuo computer locale per consentire di testare temporaneamente la configurazione dei server blocks appena configurati di Nginx.

Ciò non consentirà ad altri visitatori di visualizzare correttamente il tuo sito, ma ti darà la possibilità di raggiungere i siti in modo indipendente e testare la tua configurazione.
Nota
Assicurati di operare sul tuo computer locale durante questi passaggi e non sul tuo server VPS. Sarà necessario disporre dell'accesso root, essere un membro del gruppo amministrativo o comunque essere in grado di modificare i file di sistema per farlo.

Aprire il file hosts:
sudo nano /etc/hosts

È necessario conoscere l'indirizzo IP pubblico del server e i domini che si desidera indirizzare al server. Supponendo che l'indirizzo IP pubblico sia per esempio 11.11.11.11, modificare il file in questo modo:

127.0.0.1   localhost
. . .

11.11.11.11 esempio.com www.esempio.com
11.11.11.11 test.com www.test.com

Test

Ora che è tutto pronto, è necessario verificare che i server blocks funzionino correttamente. Puoi farlo visitando i domini nel tuo browser:

http://esempio.com

http://test.com

Se entrambi questi siti funzionano, hai configurato correttamente due server blocks indipendenti con Nginx.

Se hai modificato il file hosts sul tuo computer locale per testare i siti appena creati, per ripristinarlo puoi semplicemente rimuovere le ultime righe aggiunte.