Virtual hosting is the capability of a single system to serve multiple web domain addresses. For example, a single server could respond to requests for www.acme.com and www.coyote.com. This is clearly useful for public web sites, but virtual hosting is also an excellent technique to manage separate content within a single domain. For example, the administration interface and the user interfaces can be implemented as separate virtual hosts.
Virtual hosts are created by grouping configuration directives within a VirtualHost directive block. Directives within the block apply only to the virtual host.
<VirtualHost 126.96.36.199> ServerName www.acme.com Documents /var/www/acmeDocs ... </VirtualHost>
Before declaring a VirtualHost directive for name-based virtual hosting, you must use a NameVirtualHost directive. This specifies that the given IP address will use name-based hosting.
Name-based Virtual Hosts
Name-based virtual hosts allow multiple virtual hosts to share an IP address by using the HTTP Host header to distinguish which virtual host should service the request.
NOTE: Name-based virtual hosting cannot be used with the SSL protocol. You must use IP-based hosting.
NameVirtualHost 188.8.131.52 <VirtualHost 184.108.40.206> ServerName www.acme.com Documents /var/www/acme ... </VirtualHost> <VirtualHost 220.127.116.11> ServerName www.coyote.com Documents /var/www/coyote ... </VirtualHost>
In this example www.acme.com and www.coyote.com share the IP address 18.104.22.168. Note that the IP address specified by the NameVirtualHost directive must match the IP address in the VirtualHost directive. You may specify port numbers with the IP addresses if you require a port other than port 80.
WARNING: Some very old clients may not include the Host header in their HTTP request and so may not be able to use Name-based virtual hosting.
IP-based Virtual Hosts
IP-based virtual hosts allow multiple virtual hosts to be supported on a single server. Each IP-based virtual host consumes a separate IP address. The SSL protocol is supported with IP-based virtual hosting.
<VirtualHost 22.214.171.124> ServerName www.acme.com Documents /var/www/acme ... </VirtualHost> <VirtualHost 126.96.36.199> ServerName www.coyote.com Documents /var/www/coyote ... </VirtualHost>
In this example, www.acme.com and www.coyote.com are separate virtual hosts.