Virtual Hosts
Ten eerste: wat zijn Virtual Hosts? Een virtual host werkt als volgt: er is een server. Er zijn twee domeinen, bijvoorbeeld www.pfz.nl en members.pfz.nl. Bij www.pfz.nl en members.pfz.nl moeten twee verschillende pagina's worden getoond. Je zou hier natuurlijk twee servers voor kunnen gebruiken, maar dat is niet zo handig. Daarom worden er meestal meerdere domeinen op een server gedraaid. Dit kun je doen met Virtual Hosts, en ook Apache ondersteunt die. Deze tutorial is gebaseerd op Windows, maar werkt in principe ook voor Linux.
Deel 1: Hostsfile aanpassen
Eerst moet zorgen dat de domeinen herkend worden door je systeem. Anders wordt het aan een DNS-server gevraagd, die natuurlijk het verkeerde IP teruggeeft. Dit doe je door je eigen IP en de gewenste domeinnaam toe te voegen aan je hostsfile. Dit kun je hier vinden (het heeft geen extensie!)
Windows 95/98/Me c:\windows\hosts Windows NT/2000/XP Pro c:\winnt\system32\drivers\etc\hosts Windows XP Home/Vista c:\windows\system32\drivers\etc\hosts Linux varianten /etc/hosts
Open het en type dan het volgende per regel:
127.0.0.1 jouwdomein.com
waarbij je jouwdomein.com kunt vervangen door een adres als www.mijnsite.nl. Je kunt alles verzinnen, je hoeft zelfs geen .nl etc er achter te zetten. Je lijstje kan er bijvoorbeeld zo uitzien:
127.0.0.1 www.localhost.nl 127.0.0.1 test.localhost.nl 127.0.0.1 members.localhost.nl 127.0.0.1 test
In bovenstaand geval wordt dus voor die vier domeinen een request gemaakt naar je eigen computer, niet naar het internet.
Deel 2: Apache instellen
Nu wil je dat de verschillende domeinen allebei een andere site laten zien. Daarvoor moeten we het configuratiebestand van Apache gaan bewerken. Open daarom c:\apache\conf\httpd.conf. Onder Linux is /etc/httpd.conf of /etc/httpd/httpd.conf niet ongebuikelijk. Als je Apache ergens anders hebt geïnstalleerd vervang dan c:\apache door het pad waar Apache staat. httpd.conf kun je bewerken met een normale ASCII editor, zelfs Kladblok kun je hiervoor gebruiken. Scroll naar beneden en zoek de regel:
#NameVirtualHost *
Type hieronder
NameVirtualHost 127.0.0.1:80
of
NameVirtualHost *:80
en ga nu helemaal naar het einde van het bestand. Nu moet je het volgende typen:
<VirtualHost *:80>
ServerAdmin je.email@adres.nl
DocumentRoot "D:/www/test.localhost.nl"
ServerName test.localhost.nl
ErrorLog logs/errors_testjes.log
CustomLog "logs/access_testjes.log" common
</VirtualHost>Het deel test.localhost.nl kun je vervangen door een naam uit het lijstje. Het e-mailadres achter ServerAdmin moet je vervangen door je eigen e-mailadres. Het deel achter DocumentRoot vervang je door het pad waar je bestanden voor dat domein staan. (let wel op dat dat pad tussen aanhalingstekens moet staan als er "rare" tekens als spaties in voorkomen en dat je backslashes beter kunt vervangen door gewone slashes, dan gaat het altijd goed).
Als je geen toegang krijgt, kan je nog wat extra instellingen voor de directory tussen de VirtualHost-tags zetten:
<Directory "D:/www/test.localhost.nl">
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Directory>Nu kun je de verschillende Virtual Hosts plaatsen als op de manier hierboven. Let wel op dat bij het gebruik van Virtual Hosts alle instellingen in httpd.conf standaardinstellingen zijn, en dat de Virtual Host die bovenaan in het rijtje staat standaard wordt getoond als een domein nog niet is ingesteld in Apache. Misschien handig om even aan te denken. Ook kun je voor een VirtualHost alles instellen wat je normaal in httpd.conf ook in kunt instellen, maar dan wel tussen <VirtualHost> en </VirtualHost>.
Als je veel Virtual hosts in stelt, wordt httpd.conf een groot bestand. Daarom is het ook mogelijk om middels een regel
# Virtual hosts Include conf/extra/httpd-vhosts.conf
aan te geven dat het bestand httpd-vhosts.conf alle informatie over de virtual hosts bevat. Dit bestand bevat dezelfde info die hierboven gegeven is.
Het kan zijn dat deze include-regel in je httpd.conf staat met een # er voor. In dat geval dient het hekje verwijderd te worden.
Overkoepelende artikelen:
