Prerequisiti
Segui questa guida per installare Nginx su Ubuntu 18.04: Come installare Nginx su Ubuntu 18.04.
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.
sudo cp /var/www/esempio.com/html/index.html /var/www/test.com/html/
Apriamo il file:
sudo 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.
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 Ubuntu 18.04 LTS.