Httpd Virtual Host Configuration

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Overview

Virtual hosts can be declared using the <VirtualHost> configuration element. <VirtualHost> encloses a group of directives that apply to only a particular virtual host.

<VirtualHost ip:port>
</VirtualHost>

Name-Based Virtual Host Configuration

For each virtual host you want to serve, create a <VirtualHost> section.

The <VirtualHost> section must contain at minimum a ServerName directive to designate what host to serve and a DocumentRoot directive to indicate the file system directory that contains the content to server.

Name-Based Virtual Host Resolution

When a request arrives, the server must find the best (most specific) matching <VirtualHost> configuration based on the IP address and the port the request came on. If just one <VirtualHost> is identified, that's the one that is used. If there is more than one virtual host that matches the IP:port, httpd will further compare the ServerName and ServerAlias directives to the value of the "Host" header arrived with the request. If no ServerName/ServerAlias match is found, then the first listed virtual host is used.

Important Note that an IP:port match must occur, otherwise the main server will be used to serve the request, even if there are declared virtual servers with matching ServerNames.

Configuration Inheritance

All directives present in the httpd configuration file above the <VirtualHost> section set up the values used by the "main" server, which responds to any requests that are not handled by a <VirtualHost> definition. These values also provide defaults for any <VirtualHost> containers that defined later in the file.

If any of these directives appear inside a <VirtualHost> container, their values override the "main" defaults.

Overridable directives:

Example


#
# ... the "main" section
#

IncludeOptional conf.d/*.conf

<VirtualHost>
</VirtualHost>

<VirtualHost>
</VirtualHost>