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.