10.8. Virtual Hosts
The Apache HTTP Server's built in virtual hosting allows the server to serve
different information based on which IP address, hostname, or port is
being requested. A complete guide to using virtual hosts is available
online at http://httpd.apache.org/docs-2.0/vhosts/.
10.8.1. Setting Up Virtual Hosts
To create a name-based virtual host, it is best use the virtual host
container provided in httpd.conf as an example.
The virtual host example read as follows:
#NameVirtualHost *
#
#<VirtualHost *>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost> |
To activate name-based virtual hosting, uncomment the
NameVirtualHost line by removing the hash mark
(#) and replace the asterisk (*)
with the IP address assigned to the machine.
Next, configure a virtual host, by uncommenting and customizing the
<VirtualHost> container.
On the <VirtualHost> line, change the
asterisk (*) to the server's IP
address. Change the ServerName to a
valid DNS name assigned to the machine, and
configure the other directives as necessary.
The <VirtualHost> container is highly
customizable and accepts almost every directive available within the
main server configuration.
| Tip |
---|
| If configuring a virtual host to listen on a non-default port, that
port must be added to the Listen directive in the
global settings section of the
/etc/httpd/conf/http.conf file.
|
To activate a newly created virtual host the Apache HTTP Server must be reloaded
or restarted. Refer to Section 10.4 Starting and Stopping httpd for
instructions on doing this.
Comprehensive information about creating and configuring both
name-based and IP address-based virtual hosts is provided online at
http://httpd.apache.org/docs-2.0/vhosts/.
10.8.2. The Secure Web Server Virtual Host
By default, the Apache HTTP Server is configured as both a non-secure and a
secure server. Both the non-secure and secure servers use the same IP
address and host name, but listen on different ports: 80 and 443
respectively. This enables both non-secure and secure communications
to take place simultaneously.
One aspect of SSL enhanced HTTP transmissions are that they are more
resource intensive than the standard HTTP protocol, so a secure server
cannot serve as many pages per second. For this reason it is often a
good idea to minimize the information available from the secure
server, especially on a high traffic Web site.
| Important |
---|
| Do not use name-based virtual hosts in conjunction with a secure Web
server as the SSL handshake occurs before the HTTP request identifies
the appropriate name-based virtual host. Name-based virtual hosts only
work with the non-secure Web server.
|
The configuration directives for the secure server are contained
within virtual host tags in the
/etc/httpd/conf.d/ssl.conf file.
By default, both the secure and the non-secure Web servers share the
same DocumentRoot. It is recommended that the
DocumentRoot be different for the secure Web
server.
To stop the non-secure Web server from accepting connection comment
the line in httpd.conf which reads
Listen 80 by placing a hash mark at the beginning of
the line. When finished it will look like the following example:
For more information on configuring an SSL enhanced Web server, refer
to the chapter titled Apache HTTP Secure Server
Configuration in the Red Hat Linux Customization Guide. For
advanced configuration tips, refer to the Apache Software Foundation
documentation available online at the following URLs: