Quella dei Virtual Hosts è una tecnica messa a disposizione da alcuni web server per sfruttare un unico processo server associato alla porta HTTP con più nomi host. Senza i Virtual Host per utilizzare più nomi host saremmo costretti ad avere più istanze del server Http sulla stessa macchina con porte diverse oppure più istanze su più macchine con la stessa porta. Per il mio sistema di video sorveglianza ho intallato il web server Nginx, e dato che sto utilizzando una webapp che non offre il multi-istanza a livello applicativo l'unico modo per avere più istanze della stessa applicazione è appunto utilizzare i Virtual Hosts. Fortunatamente il web server Nginx offre questa caratteristica e devo dire che dopo averla provata il trade-off difficoltà di configurazione/efficacia è sicuramente accettabile.

Veniamo ai dettagli tecnici, se avete già installato Nginx normalmente troverete tutti i suoi files di configurazione nella directory /etc/nginx. Bene in questa directory sono presenti due sotto directory che servono al caso nostro: sites-available e sites-enabled. L'installazione di default avrà creato per voi due files col nome default, dove in sites-available sarà presente il file di configurazione di default del server nginx e in sites-enabled il link simbolico a questa configurazione del server. Come il nome della folder lascia intuire il fatto che sia presente un link simbolico alle configurazione dei "sites-available", ovveri dei siti disponibili, abilita la configurazione del server.

Premesso questo creare un virtual host su Nginx diventa davvero banale poiché basta creare una copia del file di configurazione di default presente in sites-available e rinominare tale copia col nome del virtual host che vogliamo creare, requisito fondamentale del nome host scelto è che deve corrispondere ad un nome di dominio correttamente tradotto da un servizio di risoluzione dei nomi interno o esterno.

Tornando al file di configurazione ricordatevi di rimuovere la clausola default_server sulla dichiarazione della porta di ascolto, altrimenti Nginx si arrabbia poiché non permette l'attivazione di due default_server. E cosa non meno importante nella sezione location dovete indicare il nome host che avete scelto per il virtual host.

Per fare un esempio, supponendo di voler creare un Virtual Host sorveglianza.myhome.it per il server nginx che risponde al nome myhome.it e che punta alla default root /var/www/html/ vi basta seguire i seguenti passi.

Innanzitutto posizionamoci sulla directory dove potremo poi creare il nuovo file di configurazione:

cd /etc/nginx/sites-available/
sudo cp default sorveglianza.myhome.it

sudo nano sorveglianza.myhome.it

Dove vedete le righe:

listen 80 default_server;
listen [::]:80 default_server;

eliminate la stringa default_server lasciando il carattere ';'
inoltre dove vedete la direttiva:

server_name _;

sostituitela con:

server_name sorveglianza.myhome.it;

aggiornate la root del virtual host con quella desiderata:

root /var/www/html/web/sorveglianza

salvate il file e attivate il virtual host creando il link simbolico con il seguente comando:

sudo ln -s /etc/nginx/sites-available/sorveglianza.myhome.it /etc/nginx/sites-enabled/sorveglianza.myhome.it

a questo punto è necessario riavvaire nginx:

sudo systemctl reload nginx

Infine guarnite il tutto con la configurazione degli host sul file /etc/hosts aggiungendo l'host sorveglianza.myhome.it e mappandolo con l'ip fisico del server.

Da adesso accedendo all'host sorveglianza.homepc.it invocherete l'istanza che punta a /var/www/html/web/sorveglianza mentre accedendo all'host www.myhome.it continuerete a vedere l'istanza di deafult.



  • submit to reddit
blog comments powered by Disqus