Pomocí virtuálního hostitele Apache můžete provozovat několik webových stránek na stejném serveru.
Například mohu provozovat thegeekstuff.com i top5freeware.com na jediném fyzickém serveru, na kterém běží jeden webový server Apache.
Obr:Virtuální hostitel Apache (Více webových stránek, jeden Apache)
Existují dva typy konfigurací virtuálního hostitele Apache:1) virtuální hostitel založený na IP a 2) virtuální hostitel založený na názvu. Pro většinu scénářů se doporučuje virtuální hostitel založený na názvu.
Virtuální hostitel založený na IP
V této konfiguraci, když odkazujete dvě webové stránky (s různou IP adresou) na server, na kterém běží Apache, měl by mít tento fyzický server nakonfigurované dvě různé IP adresy.
To znamená, že server by měl mít dvě ethernetové karty, každou z nich nakonfigurovanou na IP adresu odpovídajícího webu, který bude virtuální hostitel Apache obsluhovat. Takže to není praktické pro většinu aspektů a neměli byste to používat.
V následujícím příkladu server obsahuje dvě síťové karty, jedna je nakonfigurována s 192.168.101.1 ip-adresou pro thegeekstuff.com, další je nakonfigurována s 192.168.102.1 pro top5freeware.com. Obě tyto IP adresy jsou obsluhovány jedním webovým serverem Apache běžícím na tomto serveru pomocí virtuálního hostitele založeného na IP.

Obr:Virtuální hostitel založený na IP Apache
Virtuální hostitel podle jména
V této konfiguraci, když webový server Apache obdrží požadavek, hledá název hostitele v hlavičce HTTP a v závislosti na názvu hostitele serveruje různé webové stránky. To je velmi snadné, protože na fyzickém serveru potřebujete pouze jednu IP adresu; ale aktualizujete DNS pomocí více názvů webových stránek směřujících na stejnou IP adresu. Pro všechny praktické účely budete používat pouze konfiguraci virtuálního hostitele založenou na názvu.
V následujícím příkladu server obsahuje pouze jednu kartu NIC, která je nakonfigurována s ip-adresou 192.168.101.1. Záznam DNS pro web thegeekstuff.com a top5freeware.com ukazuje na ip-adresu 192.168.101.1. Když Apache obdrží požadavek, hledá záznam názvu hostitele v hlavičce HTTP a obsluhuje odpovídající web.

Obr:Virtuální hostitel založený na názvu Apache
1. Odkomentujte httpd-vhosts.conf v httpd.conf
Pokud jste nainstalovali Apache 2 ze zdroje, ve výchozím nastavení bude následující řádek v souboru httpd.conf zakomentován. Odkomentujte tento řádek.
# vi /usr/local/apache2/conf/httpd.conf Include conf/extra/httpd-vhosts.conf
2. Nastavte virtuální hostitele
Upravte soubor httpd-vhosts.conf, jak je uvedeno níže, abyste nastavili virtuální hostitele založené na pojmenování pro dva hostitele.
- NameVirtualHost *:80 – Označuje, že všichni virtuální hostitelé na základě názvu budou naslouchat na výchozím portu 80
- V následujícím příkladu nastavujeme virtuálního hostitele pro thegeekstuff.com a top5freeware.com naslouchající na stejném portu 80. Budou tedy dva
- Když přejdete na web thegeekstuff.com, soubory v adresáři /usr/local/apache2/docs/thegeekstuff budou obsluhovány serverem Apache; a access_log a error_log pro tento web budou pod /usr/local/apache2/logs/thegeekstuff
# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/usr/local/apache2/docs/thegeekstuff" ServerName thegeekstuff.com ServerAlias www.thegeekstuff.com ErrorLog "logs/thegeekstuff/error_log" CustomLog "logs/thegeekstuff/access_log" common </VirtualHost> <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/usr/local/apache2/docs/top5freeware" ServerName top5freeware.com ServerAlias www.top5freeware.com ErrorLog "logs/top5freeware/error_log" CustomLog "logs/top5freeware/access_log" common </VirtualHost>
3. Zkontrolujte syntaxi konfigurace VirtualHost
Ověřte syntaxi virtuální konfigurace pomocí „httpd -S“, jak je uvedeno níže. Když je vše správně nastaveno, zobrazí se pouze „Syntaxe OK“.
# /usr/local/apache2/bin/httpd -S VirtualHost configuration: Syntax OK
Když něco není správně nakonfigurováno, zobrazí se varovná zpráva, včetně zprávy „adresář se neopouští“, jak je uvedeno níže.
# /usr/local/apache2/bin/httpd -S Warning: DocumentRoot [/usr/local/apache2/docs/top5freeware] does not exist Warning: ErrorLog [/usr/local/apache2/logs/thegeekstuff] does not exist Syntax OK
4. Restartujte Apache a otestujte
# /usr/local/apache2/bin/apachectl restart
Když nyní přejdete na stránku thegeekstuff.com (nebo www.thegeekstuff.com), apache bude poskytovat soubory z adresáře /usr/local/apache2/docs/thegeekstuff.
Když přejdete na top5freeware.com (nebo www.top5freeware.com), stejný apache běžící na stejném serveru bude obsluhovat soubory z adresáře /usr/local/apache2/docs/top5freeware.
Jen pro zopakování, aby virtuální hostitel založený na názvech fungoval správně, měl by záznam DNS pro oba tyto weby ukazovat na stejnou externí IP adresu fyzického serveru, na kterém běží webový server Apache.