Come installare Nginx Server Blocks multipli su Debian 10

26 feb 2020 5 min di lettura
Come installare Nginx Server Blocks multipli su Debian 10
Indice dei contenuti

Introduzione

Nginx Server Blocks consente di eseguire più di un sito Web su un singolo computer. Con Server Blocks è possibile specificare la root 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.

Per una guida su come configurare Server Block singolo con Nginx su Debian 10, leggere questo tutorial.

In questo articolo, forniremo istruzioni dettagliate su come configurare un server block di Nginx su Debian 10 Buster.

Se il vostro intento è installare Nginx su di un server in remoto continuate a leggere, altrimenti se volete installare Nginx sul vostro computer locale saltate il primo paragrafo "Connessione al Server" e leggere il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh root@IP_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh VOSTRO_UTENTE@IP_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Siete ora connessi al vostro server, siete pronti per iniziare l'installazione di Nginx.

Prerequisiti

Segui questa guida per installare Nginx: Come installare Nginx su Debian 10.

Configurare i Server Blocks

Di default Nginx Debian 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

Creare una 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

Testare la configurazione

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.

Conclusione

In questo tutorial abbiamo visto come creare dei Virtual hosts (Server Blocks) per associare diversi domini alla stessa installazione di Nginx, così da poter servire diversi siti con domini diversi sullo stesso server con Debian 10 Buster.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.