Apache – virtual hosts
See also Apache topics.
If you want to know more
about virtual machines, see http://cybernut.com/guides/virtual.html
A web server is both software and hardware. The machine on which the web site
resides is referred to as a web server. The software which runs the web site is also
referred to as a web server. In our case, Apache (the web server) runs on our
FreeBSD box (also, our web server). But a given web server can run more than one web
site. It can achieve this multi-use by using virtual hosting.
Virtual hosting is
the ability for a website to act as if it is the only web site on the machine. Given
that some web site can be idle for long periods of time, allowing many web sites to share
the same hardware is a great way to reduce costs.
A very good explanation
appears within the Apache documentation. For more detail, please refer to that
Name-based virtual hosts
example, I’ve registered two names both of which translate to my FreeBSD box. For
more information on how I actually did this, see httpd/dns.
The two host names in question are:
- http://freebsddiary.yi.org – no longer in use
The server machine has one IP address, 192.168.0.45 which resolves to the name
test.freebsddiary.org. Here is what I’ve ensured is in my configuration file (/usr/local/etc/apache/httpd.conf):
NOTE: See the notes after this example.
... Port 80 ServerName test.freebsddiary.org
DocumentRoot is the location of the html files for the given virtual
Newer versions of Apache can use combined logs. Search for CustomLog
in your Apache configuration file in order to see if you can use this format instaed.
In which case, these entries will be helpful as an example:
ErrorLog /var/log/freebsddiary-error.log CustomLog /var/log/freebsddiary-access.log combined
The log and error files will be recorded in the directory /var/log/.
But you can put them anywhere you want.
If you specify an IP address for VirtualHost and supply the ServerName,
then you can avoid failures should DNS be unavailable when the configuration file is
parsed. For more detail, please see Issues Regarding DNS and Apache at
the Apache website.
This also assumes that you have pointed freebsddiary.yi.org and test.freebsddiary.org
to the same IP. In this case, 192.168.0.45.
So far so good. However, I’ve been unable to publish to my Apache Fp webserver.
I think that’s because I’ve not told Apache which users can publish.
For details on how I did that, see Apache – who can
NOTE: I found that specifying NameVirtualHost as shown above, caused a
problem with the version of Apache I was using. So I removed it and virtual hosts
NOTE: Although I am adding an IP address below, there is an easier way.
Thanks to James A. Peltier for pointing this out.
You should also see Apache – virtual hosts (continued).
An easier way (added on 10 September 2002)
As mentioned above, there is an easier way. Instead of declaring your virtual hosts
with a predefined IP address, you can use * instead. For example, I started out with this:
But I could use this instead::
Similarly, you can use * in the
NameVirtualHost declaration instead of an IP address: