Ospitare più siti Web sullo stesso Server WEB

Introduzione

La necessità di ospitare più siti web all’interno dello stesso server Web (es. Apache) è piuttosto frequente ed è una tecnica comunemente utilizzata dai fornitori di servizi hosting (es. Aruba, Netsons, Ionos, …).

Il problema

Ogni sito web ha un suo hostname, nel caso di https://www.nervigalilei.edu.it l’hostname è www.nervigalilei.edu.it, che i server DNS traducono in indirizzo IP. Utilizzando il comando nslookup www.nervigalilei.edu.it si scopre facilmente che corrisponde all’indirizzo 89.46.109.35 (valido al momento della scrittura del presente articolo, nel tempo potrebbe cambiare).
È molto probabile che tale indirizzo IP non sia associato solo a www.nervigalilei.edu.it ma sia associato anche ad altri hostname, ad esempio www.nonsaprei.it. Se così fosse (e lo è, fidatevi) quando un browser si collega alla porta 80 (o 443) dell’host avente indirizzo IP 89.46.109.35, come fa il server web a sapere che deve fornire le pagine del sito https://www.nervigalilei.edu.it piuttosto che quelle del sito http://www.nonsaprei.it?

Nell’immagine seguente i 3 hostname (www.dominio1.com, www.dominio2.com e www.dominio3.com) si traducono nello stesso indirizzo IP (79.54.103.21)

.

I server web ed il protocollo HTTP(s)

Ricordiamo velocemente che il protocollo HTTP(S) si colloca al livello Application dello stack ISO/OSI o dello stack TCP/IP e prevede la presenza di un client (il browser, cioè Chrome, Firefox, Edge, …) e di un servizio server (il server web, cioè Apache, Nginx, Ligthttp, IIS, …) che una volta posto in esecuzione sulla macchina server, si mette in attesa delle richieste che arrivano sulla porta 80 (o 443) da parte del client.
Nel caso più semplice, quello delle pagine statiche, il server web legge dal file system della macchina su cui è ospitato, il file richiesto dall’URL ricevuto dal client e lo invia al browser richiedente.

La soluzione: VirtualHost basati sull’URL

Innanzi tutto una precisazione. I VirtualHost basati sull’URL non hanno nulla a che vedere con la virtualizzazione a livello di macchina (es. VirtualBox, VMWare, …) o di processo (es. Docker).

Con questa tecnologia il server web analizza preliminarmente l’URL della richiesta pervenutagli, in particolare viene analizzato l’host name (http://www.dominio2.com/index.html) ed in base a questo la richiesta viene dirottata su un sottoinsieme del filesystem associato a quell’hostname.

La figura seguente illustra il funzionamento di un server su cui è attiva la tecnologia VirtualHost. Il server Web ospita 3 siti; in questo caso si ipotizza che per ….  Quando arriva una rihiesta, il relativo URL viene analizzato dal front/end e

 

Leave a Reply

Your email address will not be published. Required fields are marked *