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