Recycling Ip Addresses with Apache
ArticleCategory: [Choose a category for your article]
AuthorImage:[Here we need a little image form you]
TranslationInfo:[Author and translation history]
original in en Atif Ghaffar
AboutTheAuthor:[A small biography about the author]
I live and work in Switzerland as a webmaster/unix administrator.
My passions include, Linux, unix, Perl, Apache and GPL softwares.
More about me can be found on my homepage
Abstract:[Here you write a little summary]
This article demonstrates how to serve multiple virtual webservers using the same ip address with Apache on Unix/Linux. The article assumes that the reader has some knowledge of Apache and DNS and unix.
The target audience of this article is ISPs, System Administrator and anyone who cares to read and learn.
ArticleIllustration:[This is the title picture for your article]
ArticleBody:[The article body]
Why should we recycle IP addresses?
Ip address recycling is useful for number of reasons.
- one can easily run out of ip addresses
- one might have only one ip address (as in my case)
- More system administrators time to add interfaces to host to use multiple ip addresses.
How to recycle ip adresses?
Using Apache it is simple to serve multiple domains with a single ip address.
For this article we will assume the ip address to be 192.168.1.1, and hostname hometranet.home.
Simply add a line like this to your httpd.conf file
Next we will add three virtual servers using the same ip address
#Host for unix files
ScriptAlias /cgi-bin/ /www/unix/cgi-bin/
#Host for perl stuff
ScriptAlias /cgi-bin/ /www/perl/cgi-bin/
#Here we host some cool Apache stuff
ScriptAlias /cgi-bin/ /www/apache/cgi-bin/
So using one ip address we have easily managed 3 different virtualhosts.
Next add CNAMES or A Records for these names in your nameserver's
zone file and dont forget to increment the serial number :)
for eg: in my /var/named/hometranet.home.fwd, I would add
perl.hometranet.home. IN A 192.168.1.1
apache.hometranet.home. IN A 192.168.1.1
unix.hometranet.home. IN A 192.168.1.1
If you call this host by any other name than the ones given in the virtual config then the first virtual host will respond.
Before Apache 1.3.x the last one would have had responded.
For eg: If this host is named madmag then calling http://madmag.hometranet.home will give you the same result as calling unix.hometranet.home.
Using wildcards, dynamic hostnames
This is the cool part. Apache allows wildcards to be used in hostanames.
Meaning you can set a domain *.home.hometranet.home and all queries to
user1.home.hometranet.home, user2.home.hometranet.home, user3.home.hometranet.home,etc
will be responded.
#host for users
and an entry in the named zone file.
*.home.hometranet.home. IN A 192.168.1.1
Note: This trick will not work if you are using Microsoft DNS Server. Apparently it refuses to accept wildcards in hostnames.
(But you arent using one, are you??)
I once wrote a small system that allows users on the network to add their
CV in the database, and using the above trick, their CVs
were availabe by http://theirUserName.cv.developer.ch.
Here is a bit more exhaustive configuration file that i have separated from my main httpd.conf file
This one is actually on my server.
To include this file in the main httpd.conf you can use the Include directive in your main httpd.conf.
[Apache name-based Virtual Host Support]
[Apache Virtual Host documentation]
- [An In-Depth Discussion of Virtual Host Matching]