Blog

nginx

Configurazione di un Nginx Server Block

Guide

Configurazione di un Nginx Server Block

Quando si utilizza il Web Server Nginx, i Server Blocks (simili ai Virtual Hosts in Apache) possono essere utilizzati per incapsulare i dettagli di configurazione e ospitare più di un dominio su un singolo server.

immagine nginx
Logo di Nginx

Il problema

Supponiamo di avere un nostro dominio con nome esempio.com e di voler visualizzare una pagina HTML quando si accede all’indirizzo. In seguito abbiamo pianificato di acquistare un altro dominio e vogliamo poter visualizzare un’altra pagina HTML per quest’altro indirizzo. Comunque, per risparmiare, vogliamo anche utilizzare un solo VPS (Virtual Private Server), lo stesso per tutti i nostri siti web.

La soluzione

Semplice: creare sul nostro server un Nginx Server Block separato per ciascun dominio. In questa guida andiamo a configurare un Server Block per il dominio esempio.com

Come prima cosa, installare il Web Server Nginx sulla macchina:

sudo apt-get update 
sudo apt-get install nginx

Una volta installato verificare che stia girando correttamente:

sudo systemctl status nginx

Se sta girando correttamente, aprire una pagina in incognito nel browser e recarsi al seguente indirizzo: http://esempio.com.

Dovrebbe vedersi una pagina di presentazione, se così non fosse potrebbe essere necessario aprire alcune porte nel firewall del server oppure potremmo non aver puntato il nostro dominio verso l’indirizzo IP del nostro server.

Creare un percorso sul server dove poter mettere un file personalizzato da far servire al Virtual Host (Server Block) di Nginx:

sudo mkdir -p /var/www/esempio.com/html 
sudo chown -R $USER:$USER /var/www/esempio.com/html 
sudo chmod -R 755 /var/www
cd /var/www/esempio.com/html  
nano index.html

Procedere con la creazione del primo file per il Server Block:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/esempio.com

Svuotare il seguente file e scrivere all’interno di esso il seguente testo di configurazione:

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;
        }
}

I file di configurazione di Nginx sono davvero semplici, sono composti da diverse sezioni (in questo caso abbiamo la sezione “server”) e ogni sezione accetta delle direttive con la seguente sintassi: direttiva parametri;

Ad esempio, osserviamo l’istruzione “root /var/www/esempio.com/html;“: root è il nome della direttiva e il percorso è il parametro passato alla direttiva.

Alcune direttive accettano più di un parametro, come nel caso di “server_name esempio.com www.esempio.com;“: server_name è la direttiva e i due indirizzi sono i parametri che abbiamo passato alla direttiva.

Notiamo anche come tutte le direttive terminano con un punto e virgola.

Questa è una configurazione basilare, nelle righe iniziali indichiamo al Web Server di rimanere in ascolto sulla porta 80 (direttiva “listen“). In seguito specifichiamo il percorso con i nostri file HTML (direttiva “root“) e i file da visualizzare se nessun nome è indicato nella URL (direttiva “index“). Con la direttiva “server_name” andiamo a specificare il Server Block vero e proprio, si tratta infatti della direttiva che indica che questa configurazione server è quella valida per l’indirizzo esempio.com (e www.esempio.com).

Se in futuro volessimo creare un altro Server Block infatti ci basterà creare un altro file nella directory “/etc/nginx/sites-available/” con la direttiva server_name modificata per un altro dominio.

Una volta creato il file di configurazione del nostro Server Block dobbiamo abilitarlo, con il seguente comando:

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

Un passaggio consigliato, prima di concludere la nostra configurazione, è di modificare anche il file di configurazione principale di nginx:

sudo nano /etc/nginx/nginx.conf

e aggiungere la seguente direttiva alla sezione “http”:

http {
    . . .

    server_names_hash_bucket_size 64;

    . . .
}

A questo punto non ci resta che controllare che non ci siano errori di sintassi nei nostri files di configurazione:

sudo nginx –t

Se è andato tutto bene, riavviamo il Web Server:

sudo systemctl restart nginx

Abbiamo finito. Se desideri approfondire la tua conoscenza di Nginx ti consigliamo il seguente testo:

Immagine non utilizzabile esternamente.