Virtual Host

Virtual hosting is a method for hosting multiple domain names (with separate handling of each name) on a single server (or pool of servers). This allows one server to share its resources, such as memory and processor cycles, without requiring all services provided to use the same host name. The term virtual hosting is usually used in reference to web servers but the principles carry over to other internet services.

One widely used application is shared web hosting. Shared web hosting prices are lower than a dedicated web server because many customers can be hosted on a single server. It is also very common for a single entity to want to use multiple names on the same machine so that the names can reflect services offered rather than where those services happen to be hosted.

There are two main types of virtual hosting, name-based and IP-based. Name-based virtual hosting uses the host name presented by the client. This saves IP addresses and the associated administrative overhead but the protocol being served must supply the host name at an appropriate point. In particular, there are significant difficulties using name-based virtual hosting with SSL/TLS. IP-based virtual hosting uses a separate IP address for each host name, and it can be performed with any protocol but requires a dedicated IP address per domain name served. Port-based virtual hosting is also possible in principle but is rarely used in practice because it is unfriendly to users.The examples of which are VMS.

>Name-based and IP-based virtual hosting can be combined: a server may have multiple IP addresses and serve multiple names on some or all of those IP addresses. This technique can be useful when using SSL/TLS with wildcard certificates. For example, if a server operator had two certificates, one for *.example.com and one for *.example.net, he could serve foo.example.com and bar.example.com off the same IP address but would need a separate IP address for baz.example.net.



reference:

https://itservices.stanford.edu/service/vhost/doc

Innanzitutto, cosa sono i Virtual Host? In parole molto semplici potremmo definirli come dei sistemi attraverso cui una singola macchina è in grado di risolvere uno o più indirizzi IP; ciò consente ad un unico terminale di agire come se fosse dotato di più sistemi.

Quindi sarà sufficiente una sola macchina per ospitare più siti internet e dedicare ad ognuno di essi uno spazio e un controllo separati. Esistono per Apache due categorie principali di Host virtuali: gli Host basati sul nome (hostname) e quelli basati sull'indirizzo IP.

La tecnologia Name-based è generalemente considerata la più semplice e consiste nel configurare il server DNS in modo che sia in grado di visualizzare gli hostname relativi ad un determinato indirizzo IP; quindi si dovrà configurare il Web server Apache in modo che sia in grado di riconoscere i diversi nomi di Host. I Virtual Host basati sull'hostname prevedono che il server sia supportato dal client per registrare i nomi di Host come parte delle intestazioni HTTP (headers), in questo modo sarà possibile condividere più Host su uno stesso indirizzo IP

Gli IP-based Virtual Hosts utilizzano invece l'indirizzo IP di connessione per determinare il corretto Virtual Host per cui viene inviata una richiesta, questo vuol dire che ciascun Host dovrà essere realtivo ad un IP specifico.

In generale è consigliabile utilizzare Virtual Host basati sul nome solo nei casi in cui non sia possibile avvalersi di Host virtuali basati su IP. Questa indicazione di massima attiene al fatto che il primo tipo di configurazione soffre di alcuni limiti che potrebbero rendere più difficoltoso il lavoro del server.