Meerdere name-based websites op één IP-adres draaien

Je hebt één IP-adres en meerdere DNS-aliassen (CNAMES) die naar dat IP-adres verwijzen. Je wilt bijvoorbeeld een webserver draaien voor www.domein1.com en www.domain2.org op één machine.

# Ensure that Apache listens on port 80 and name-based virtual hosting is enabled.
Listen 80
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.domain1.com
# Other directives here
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /www/example2
ServerName www.domain2.org
# Other directives here
</VirtualHost>

De sterretjes komen overeen met alle IP-adressen, waardoor de hoofdserver zelf geen verzoeken afhandelt. Je kunt verschillende inhoud aanbieden op basis van verschillende IP-adressen of poorten.

Met VirtualHost-directives omsluit je een groep directives die alleen voor die ene virtual host gelden.

Dezelfde inhoud op verschillende IP-adressen aanbieden

Je kunt de server met één VirtualHost-blok zowel interne als externe verzoeken van dezelfde inhoud laten voorzien.

<VirtualHost 192.168.1.1 172.20.30.40>
DocumentRoot /www/example1
ServerName www.domain1.com
# Other directives here
</VirtualHost>

Verschillende sites op verschillende poorten draaien

Je hebt meerdere domeinen die naar hetzelfde IP wijzen en wilt ook meerdere poorten bedienen.

Listen 80
Listen 8080
#Mixed port-based and ip-based virtual hosts
Listen 172.20.30.40:80
Listen 172.20.30.40:8080

<VirtualHost *:80>
DocumentRoot /www/example80
ServerName www.domain.com
# Other directives here
</VirtualHost>

<VirtualHost *:8080>
DocumentRoot /www/example8080
ServerName www.domain.com
# Other directives here
</VirtualHost>

Onbekende verzoeken opvangen met default vhosts

De eerste VirtualHost geldt ook als de standaard- of primaire server. Komt een verzoek niet overeen met een van de opgegeven ServerName-directives in een virtual host, dan wordt het afgehandeld door de eerste name-based vhost in het configuratiebestand. Een default vhost handelt nooit een verzoek af dat naar een adres/poort ging die voor name-based vhosts wordt gebruikt.

Om een verzoek naar een niet-opgegeven IP-adres en poort op te vangen — dus een combinatie van adres/poort die voor geen enkele andere virtual host wordt gebruikt — neem je de volgende directives op:

<VirtualHost _default_:80>
DocumentRoot /www/default
</VirtualHost>

Let op! Gebruik je zo’n default vhost met een jokerteken voor de poort (in plaats van poort 80), dan bereikt geen enkel verzoek de hoofdserver meer.