Apache has a number of block directives that limit the application of other directives within them to operations on particular virtual hosts, directories, or files. These are extremely important to the operation of a real web site because within these blocks—particularly <VirtualHost>—the webmaster can, in effect, set up a large number of individual servers run by a single invocation of Apache. This will make more sense when you get to Section 3.5, further on in this chapter.
The syntax of the block directives is detailed next.
<VirtualHost host[:port]> ... </VirtualHost> Server config
The <VirtualHost> directive within a Config file acts like a tag in HTML: it introduces a block of text containing directives referring to one host; when we're finished with it, we stop with </VirtualHost>. For example:
.... <VirtualHost www.butterthlies.com> ServerAdmin email@example.com DocumentRoot /usr/www/site.virtual/htdocs/customers ServerName www.butterthlies.com ErrorLog /usr/www/site.virtual/name-based/logs/error_log TransferLog /usr/www/site.virtual/name-based/logs/access_log </VirtualHost> ...
<VirtualHost> also specifies which IP address we're hosting and, optionally, the port. If port is not specified, the default port is used, which is either the standard HTTP port, 80, or the port specified in a Port directive. host can also be _default_ , in which case it matches anything no other <VirtualHost> section matches.
In a real system, ...