Lad mig starte med at sige, at jeg intet ved omkring Apache (selv bruger jeg AOLserver), men et overordnet princip ville være at starte tre forskellige servere på 127.0.0.1:8001, 127.0.0.1:8002, 127.0.0.1:8003 og herefter lave en masterserver, som kører på port 80 af din offentlige IP-adresse og som gennemsigtigt sender dine requests videre til de interne adresser alt efter hvilket domænenavn, der er brugt.
Hvor Apache reagerer med dette, skal jeg ikke kunne sige. Jeg har hørt (tror jeg) at mange vælger at bruge SQUID eller AOLserver til masterserveren i stedet for Apache. (Ellers kunne du jo bare skifte helt til AOLserver, hvilket giver den fordel at du ikke skal sende forespørgslerne mellem du virtuelle servere og master'en via TCP -- istedet kan du bruge UNIX-sockets, hvilket er meget mindre ressourcekrævende).
Anyway, du kan læse om princippet på:
http://www.theashergroup.com/tag/articles/nsvhr/virtual-hosting-howto.adpOg et (meget kort) uddrag af min master-configfil ser sådan ud (det giver et indtryk af idéen). Skulle du få lyst til at bruge AOLserver, kan du lige vende tilbage ;-)
ns_section ns/server/master/module/nsvhr/maps
ns_param
www.infotouch.dk unix://www.infotouch.dk.nsunixns_param
www.infotouch.dk:80 unix://www.infotouch.dk.nsunix#ns_param
www.infotouch.dk http://127.0.0.1:2001ns_param infotouch.dk
unix://www.infotouch.dk.nsunixns_param infotouch.dk:80
unix://www.infotouch.dk.nsunix#ns_param infotouch.dk
http://127.0.0.1:2001ns_param infotouch.refresh.dk
unix://www.infotouch.dk.nsunixns_param infotouch.refresh.dk:80
unix://www.infotouch.dk.nsunix#ns_param infotouch.refresh.dk
http://127.0.0.1:2001ns_param search.refresh.dk
unix://search.refresh.dk.nsunixns_param search.refresh.dk:80
unix://search.refresh.dk.nsunix#ns_param search.refresh.dk
http://127.0.0.1:2002ns_param updated.refresh.dk
unix://updated.refresh.dk.nsunix