Virtual Hosts

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.

Configuration Directives

Virtual hosts are created by grouping configuration directives within a VirtualHost directive block. Directives within the block apply only to the virtual host.

<VirtualHost>
    ServerName www.acme.com
    Documents /var/www/acmeDocs
      ...
</VirtualHost>

The VirtualHost directive may optionally take a list of IP:PORT endpoints on which to attach. Only these endpoints will be connected to the virtual host. For example:

<VirtualHost *:80, *:443>
    ServerName www.acme.com
    Documents /var/www/acme
    ...
</VirtualHost>

The VirtualHost directive creates a new Host and routes for that host. The settings of outer directives are inherited, but the routes are not inherited.

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.

Example

<VirtualHost>
    ServerName www.acme.com
    Documents /var/www/acme
    ...
</VirtualHost>
<VirtualHost>
    ServerName www.coyote.com
    Documents /var/www/coyote
    ...
</VirtualHost>

In this example www.acme.com and www.coyote.com will listen on all endpoints.

The ServerName directive supports wild cards and regular expressions. In this manner, a single virtual host block may serve multiple domains. For example

ServerName *.example.com # matches anything.example.com ServerName www.example.* # matches any domain containing www.example. ServerName /example.com|acme.com|coyote.com/

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.

<VirtualHost 206.148.97.56>
    ServerName www.acme.com
    Documents /var/www/acme
    ...
</VirtualHost>
<VirtualHost 206.148.97.57>
    ServerName www.coyote.com
    Documents /var/www/coyote
    ...
</VirtualHost>

In this example, www.acme.com and www.coyote.com are separate virtual hosts.

© Embedthis Software. All rights reserved.