mirror of
https://github.com/apache/httpd.git
synced 2025-05-19 02:21:09 +03:00
Clean up confusion over which directives can go in <VirtualHost> git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86235 13f79535-47bb-0310-9956-ffa450edef68
135 lines
5.1 KiB
HTML
135 lines
5.1 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>Apache IP-based Virtual Host Support</TITLE>
|
|
</HEAD>
|
|
|
|
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
|
|
<BODY
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#000080"
|
|
ALINK="#FF0000"
|
|
>
|
|
<!--#include virtual="header.html" -->
|
|
<H1 ALIGN="CENTER">Apache IP-based Virtual Host Support</H1>
|
|
|
|
<STRONG>See also:</STRONG>
|
|
<A HREF="name-based.html">Name-based Virtual Hosts Support</A>
|
|
|
|
<HR>
|
|
|
|
<H2>System requirements</H2>
|
|
As the term <CITE>IP-based</CITE> indicates, the server <STRONG>must have a
|
|
different IP address for each IP-based virtual host</STRONG>.
|
|
This can be achieved by the machine having several physical network connections,
|
|
or by use of virtual interfaces which are supported by most modern
|
|
operating systems (see system documentation for details, these are
|
|
frequently called "ip aliases", and the "ifconfig" command
|
|
is most commonly used to set them up).
|
|
|
|
<H2>How to set up Apache</H2>
|
|
There are two ways of configuring apache to support multiple hosts.
|
|
Either by running a separate httpd daemon for each hostname, or by running a
|
|
single daemon which supports all the virtual hosts.
|
|
<P>
|
|
Use multiple daemons when:
|
|
<UL>
|
|
<LI>There are security partitioning issues, such as company1 does not want
|
|
anyone at company2 to be able to read their data except via the web.
|
|
In this case you would need two daemons, each running with different
|
|
<A HREF="../mod/core.html#user">User</A>,
|
|
<A HREF="../mod/core.html#group">Group</A>,
|
|
<A HREF="../mod/core.html#listen">Listen</A>, and
|
|
<A HREF="../mod/core.html#serverroot">ServerRoot</A> settings.
|
|
<LI>You can afford the memory and
|
|
<A HREF="../misc/descriptors.html">file descriptor requirements</A> of
|
|
listening to every IP alias on the machine. It's only possible to
|
|
<A HREF="../mod/core.html#listen">Listen</A>
|
|
to the "wildcard" address, or to specific addresses. So if you have
|
|
a need to listen to a specific address for whatever reason, then you
|
|
will need to listen to all specific addresses. (Although one httpd
|
|
could listen to N-1 of the addresses, and another could listen to
|
|
the remaining address.)
|
|
</UL>
|
|
Use a single daemon when:
|
|
<UL>
|
|
<LI>Sharing of the httpd configuration between virtual hosts is acceptable.
|
|
<LI>The machine services a large number of requests, and so the performance
|
|
loss in running separate daemons may be significant.
|
|
</UL>
|
|
|
|
<H2>Setting up multiple daemons</H2>
|
|
Create a separate httpd installation for each virtual host.
|
|
For each installation, use the
|
|
<A HREF="../mod/core.html#listen">Listen</A> directive in the configuration
|
|
file to select which IP address (or virtual host) that daemon services.
|
|
e.g.
|
|
<PRE>
|
|
Listen www.smallco.com:80
|
|
</PRE>
|
|
It is recommended that you use an IP address instead of a hostname
|
|
(see <A HREF="../dns-caveats.html">DNS caveats</A>).
|
|
|
|
<H2>Setting up a single daemon with virtual hosts</H2>
|
|
For this case, a single httpd will service requests for the main server
|
|
and all the virtual hosts.
|
|
The <A HREF="../mod/core.html#virtualhost">VirtualHost</A> directive in the
|
|
configuration file is used to set the values of
|
|
<A HREF="../mod/core.html#serveradmin">ServerAdmin</A>,
|
|
<A HREF="../mod/core.html#servername">ServerName</A>,
|
|
<A HREF="../mod/core.html#documentroot">DocumentRoot</A>,
|
|
<A HREF="../mod/core.html#errorlog">ErrorLog</A> and
|
|
<A HREF="../mod/mod_log_config.html#transferlog">TransferLog</A> or
|
|
<A HREF="../mod/mod_log_config.html#customlog">CustomLog</A>
|
|
configuration directives to different values for each virtual host.
|
|
e.g.
|
|
<PRE>
|
|
<VirtualHost www.smallco.com>
|
|
ServerAdmin webmaster@mail.smallco.com
|
|
DocumentRoot /groups/smallco/www
|
|
ServerName www.smallco.com
|
|
ErrorLog /groups/smallco/logs/error_log
|
|
TransferLog /groups/smallco/logs/access_log
|
|
</VirtualHost>
|
|
|
|
<VirtualHost www.baygroup.org>
|
|
ServerAdmin webmaster@mail.baygroup.org
|
|
DocumentRoot /groups/baygroup/www
|
|
ServerName www.baygroup.org
|
|
ErrorLog /groups/baygroup/logs/error_log
|
|
TransferLog /groups/baygroup/logs/access_log
|
|
</VirtualHost>
|
|
</PRE>
|
|
|
|
It is recommended that you use an IP address instead of a hostname
|
|
(see <A HREF="../dns-caveats.html">DNS caveats</A>).
|
|
|
|
<P>
|
|
|
|
Almost <STRONG>any</STRONG> configuration directive can be put in the
|
|
VirtualHost directive, with the exception of directives that control
|
|
process creation and a few other directives. To find out if a
|
|
directive can be used in the VirtualHost directive, check the
|
|
<A HREF="../mod/directive-dict.html#Context">Context</A> using the
|
|
<A HREF="../mod/directives.html">directive index</A>.
|
|
|
|
<P>
|
|
<A HREF="../mod/core.html#user">User</A> and
|
|
<A HREF="../mod/core.html#group">Group</A> may be used inside a VirtualHost
|
|
directive if the <A HREF="../suexec.html">suEXEC wrapper</A> is used.
|
|
<P>
|
|
|
|
<EM>SECURITY:</EM> When specifying where to write log files, be aware
|
|
of some security risks which are present if anyone other than the
|
|
user that starts Apache has write access to the directory where they
|
|
are written. See the <A HREF="../misc/security_tips.html">security
|
|
tips</A> document for details.
|
|
</P>
|
|
|
|
<!--#include virtual="footer.html" -->
|
|
</BODY>
|
|
</HTML>
|
|
|