Virtual hosts allow you to run different servers for different IP
addresses, different host names, or different ports on the same machine.
For example, you can run the website for https://www.example.com and
https://www.anotherexample.com on the same Web server using virtual
hosts. This option corresponds to the <VirtualHost>
directive for the default virtual host and IP based virtual
hosts. It corresponds to the <NameVirtualHost>
directive for a name based virtual host.
The directives set for a virtual host only apply to that
particular virtual host. If a directive is set server-wide using the
Edit Default Settings button and not defined
within the virtual host settings, the default setting is used. For
example, you can define a Webmaster email address
in the Main tab and not define individual email
addresses for each virtual host.
The HTTP Configuration Tool includes a default
virtual host as shown in Figure 25-8.
To add a virtual host, click the Virtual Hosts
tab and then click the Add button. You can also
edit a virtual host by selecting it and clicking the
Edit button.
The General Options settings only apply to the
virtual host that you are configuring. Set the name of the virtual
host in the Virtual Host Name text area. This
name is used by HTTP Configuration Tool
to distinguish between virtual hosts.
Set the Document Root Directory value to the
directory that contains the root document (such as index.html) for
the virtual host. This option corresponds to the DocumentRoot
directive within the <VirtualHost> directive. The
default DocumentRoot is
/var/www/html.
The Webmaster email address corresponds to the
ServerAdmin
directive within the VirtualHost
directive. This email address is used in the footer of error pages if
you choose to show a footer with an email address on the error pages.
In the Host Information section, choose
Default Virtual Host, IP based
Virtual Host, or Name based Virtual
Host.
Default Virtual Host
You should only configure one default virtual host
(remember that there is one setup by default). The default
virtual host settings are used when the requested IP address
is not explicitly listed in another virtual host. If there is
no default virtual host defined, the main server settings are
used.
IP based Virtual Host
If you choose IP based Virtual Host,
a window appears to configure the <VirtualHost>
directive based on the IP address of the
server. Specify this IP address in the IP
address field. To specify multiple IP addresses,
separate each IP address with spaces. To specify a port, use
the syntax IP Address:Port. Use
"colon, asterisk" (:*)
to configure all ports for the IP address. Specify the host
name for the virtual host in the Server Host
Name field.
Name based Virtual Host
If you choose Name based Virtual
Host, a window appears to configure the NameVirtualHost
directive based on the host name of the server. Specify the
IP address in the IP address field. To
specify multiple IP addresses, separate each IP address
with spaces. To specify a port, use the syntax
IP Address:Port. Use "colon,
asterisk" (:*) to
configure all ports for the IP address. Specify the host
name for the virtual host in the Server Host
Name field. In the Aliases
section, click Add to add a host name
alias. Adding an alias here adds a ServerAlias
directive within the NameVirtualHost directive.
You cannot use name based virtual hosts with SSL because the SSL
handshake (when the browser accepts the secure Web server's
certificate) occurs before the HTTP request, which identifies the
appropriate name based virtual host. If you plan to use name-based
virtual hosts, remember that they only work with your non-secure Web
server.
Figure 25-9. SSL Support
If an Apache HTTP Server is not configured with SSL support,
communications between an Apache HTTP Server and its clients are not
encrypted. This is appropriate for websites without personal or
confidential information. For example, an open source website that
distributes open source software and documentation has no need for
secure communications. However, an ecommerce website that requires
credit card information should use the Apache SSL support to encrypt
its communications. Enabling Apache SSL support enables the use of
the mod_ssl security module. To enable it through
the HTTP Configuration Tool, you must allow
access through port 443 under the Main tab =>
Available Addresses. Refer to Section 25.1 Basic Settings for details. Then, select the
virtual host name in the Virtual Hosts tab,
click the Edit button, choose
SSL from the left-hand menu, and check the
Enable SSL Support option as shown in Figure 25-9. The SSL
Configuration section is pre-configured with the dummy
digital certificate. The digital certificate provides
authentication for your secure Web server and identifies the secure
server to client Web browsers. You must purchase your own digital
certificate. Do not use the dummy one provided for your
website. For details on purchasing a CA-approved digital
certificate, refer to the Chapter 26 Apache HTTP Secure Server Configuration.
The Site Configuration, Environment
Variables, and Directories options
for the virtual hosts are the same directives that you set when
you clicked the Edit Default Settings button,
except the options set here are for the individual virtual hosts
that you are configuring. Refer to Section 25.2 Default Settings for details on these
options.