Hergebruik van IP-adressen met Apache
ArticleCategory:
System Administration
AuthorImage:
TranslationInfo:
original in en Atif Ghaffar
en to nl Tom Uijldert
AboutTheAuthor:
Ik woon en werk in Zwitserland als web- en Unixbeheerder. Mijn interesses
zijn onder andere Linux, Unix, Perl, Apache en GPL-software. Meer
informatie over mijzelf is te vinden op mijn
homepagina
Abstract:
Dit artikel legt uit hoe meerdere webservers kunnen worden bediend met
het gebruik van slechts één IP-adres met Apache op
Unix/Linux. Aangenomen wordt dat de lezer enigszins op de hoogte is met
Apache, DNS en Linux.
Doelgroep voor dit artikel zijn ISP's, systeembeheerders en eenieder met
interesse voor dit onderwerp.
ArticleIllustration:
ArticleBody:
Waarom IP-adressen hergebruiken?
Er zijn een aantal redenen aan te voeren voor het hergebruik van
IP-adressen.
- Je komt meestal al snel IP-adressen tekort
- Je hebt maar één IP-adres (bij mij het geval)
- Het gebruik van meerdere adressen vergt meer administratie en beheer
Hoe een IP-adres opnieuw te gebruiken
Met Apache is het simpel om meerdere domains te bedienen met een
enkel IP-adres.
Voor dit artikel nemen we aan dat het IP-adres 192.168.1.1
is en de naam van de machine hometranet.home. Voeg gewoon
onderstaande regel toe aan je httpd.conf bestand.
NameVirtualHost 192.168.1.1:80
Vervolgens voegen we drie verzonnen servers toe met hetzelfde
IP-adres.
#Machine voor Unix bestanden
<VirtualHost 192.168.1.1:80>
ServerName unix.hometranet.home
DocumentRoot /www/unix/html
ScriptAlias /cgi-bin/ /www/unix/cgi-bin/
TransferLog /www/unix/logs/access_log
ErrorLog /www/unix/logs/error_log
</VirtualHost>
#Machine voor Perl bestanden
<VirtualHost 192.168.1.1:80>
ServerName perl.hometranet.home
DocumentRoot /www/perl/html
ScriptAlias /cgi-bin/ /www/perl/cgi-bin/
TransferLog /www/perl/logs/access_log
ErrorLog /www/perl/logs/error_log
</VirtualHost>
#Hierop zetten we gave Apache programma's
<VirtualHost 192.168.1.1:80>
ServerName apache.hometranet.home
DocumentRoot /www/apache/html
ScriptAlias /cgi-bin/ /www/apache/cgi-bin/
TransferLog /www/apache/logs/access_log
ErrorLog /www/apache/logs/error_log
</VirtualHost>
Aldus hebben we hiermee eenvoudig 3 verschillende, verzonnen, machines
onder beheer.
Voeg vervolgens CNAMES of A records toe aan het
zonebestand van je nameserver voor alle drie de machines en
vergeet niet het serienummer op te hogen :) Voor bijvoorbeeld mijn
bestand /var/named/hometranet.home.fwd zou ik het volgende
toevoegen:
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
Let op: als je de machine een andere naam geeft dan geconfigureerd dan
zal alleen de eerstgenoemde machine reageren.
Vóór versie 1.3 van Apache was het de laatstgenoemde
machine.
Voor dit voorbeeld: als de machine madmag heet dan zal de
aanroep http://madmag.hometranet.com hetzelfde zijn als het
aanroepen van unix.hometranet.home.
Het gebruik van wildcards en dynamische machinenamen
Dit is het leuke gedeelte. Apache staat het gebruik van wildcards toe in
namen van machines.
Dit betekent dat het gebruik van een naam als
*.home.hometranet.home reacties oplevert van machines als
user1.home.hometranet.home,
user2.home.hometranet.home,
user3.home.hometranet.home enz.
Voorbeeld:
#host for users
<VirtualHost 192.168.1.1:80>
ServerName home.hometranet.home
ServerAlias *.home.hometranet.home
DocumentRoot /www/home/html
TransferLog /www/home/logs/access_log
ErrorLog /www/home/logs/error_log
</VirtualHost>
en een toevoeging in het named zone bestand:
*.home.hometranet.home. IN A 192.168.1.1
Let op: deze truc gaat niet op als je gebruik maakt van
Microsoft DNS Server. Kennelijk weigert deze wildcards in
machinenamen (maar die gebruik je niet, toch?).
Op deze manier heb ik eens een klein systeem gemaakt die gebruikers in
staat stelt hun CV aan een database toe te voegen waarbij, met
gebruikmaking van bovenstaande truc, je de CV kon raadplegen via
hunUserNaam.cv.developer.ch.
Mijn configuratiebestand met verzonnen machines
Hier tref je
een wat uitgebreider configuratiebestand die ik uit mijn
httpd.conf bestand heb gehaald. Deze staat op mijn server.
Om het bestand aan je httpd.conf toe te voegen kun je de
include
opdracht gebruiken:
include "/etc/vhosts.conf"
Verdere informatie
-
[Apache name-based Virtual Host Support]
-
http://www.apache.org/docs/vhosts/name-based.html
-
[Apache Virtual Host documentation]
-
http://www.apache.org/docs/vhosts/index.html
-
[An In-Depth Discussion of Virtual Host Matching]
-
http://www.apache.org/docs/vhosts/details.html