30.9. Virtuální servery

Virtuální servery umožňují hostovat na jednom počítači více domén. Je to spolehlivý a ověřený způsob, jak ušetřit náklady na administraci zvláštního serveru pro každou doménu. Apache nabízí hned několik možností, jak virtuální servery nastavit:

30.9.1. Virtuální server založený na jménu

Virtuální server založený na jménu hostuje na jedné instanci Apache několik domén. Není nutné nastavovat žádné další IP adresy. Jedná se o nejjednodušší a nejčastěji používanou možnost. Důvody proti této konfiguraci najdete v dokumentaci Apache.

Konfigurace se provádí přímo v konfiguračním souboru /etc/apache2/httpd.conf. Abyste aktivovali virtuální server založený na jménu, musíte zadat NameVirtualHost *. Nastavení * způsobí, že bude Apache přijímat všechny příchozí požadavky. Pak nastavte jednotlivé servery:

<VirtualHost *>
    ServerName www.example.com
    DocumentRoot /srv/www/htdocs/example.com
    ServerAdmin webmaster@example.com
    ErrorLog /var/log/apache2/www.example.com-error_log
    CustomLog /var/log/apache2/www.example.com-access_log common
</VirtualHost>
<VirtualHost *>
    ServerName www.myothercompany.com
    DocumentRoot /srv/www/htdocs/myothercompany.com
    ServerAdmin webmaster@myothercompany.com
    ErrorLog /var/log/apache2/www.myothercompany.com-error_log
    CustomLog /var/log/apache2/www.myothercompany.com-access_log common
</VirtualHost>

VirtualHost musí být nastaven i pro originální doménu serveru (www.example.com). Originální doména i dodatečná doména (www.myothercompany.com) jsou v našem příkladě hostovány na stejném serveru.

Stejně jako v NameVirtualHost je v direktivách VirtualHost použita *. Apache používá pole "host" v HTTP hlavičce pro spojení požadavků s virtuálním serverem. Požadavek je doručen tomu virtuálnímu serveru, jehož nastavení v ServerName odpovídá údaji v HTTP hlavičce.

Pro direktivy ErrorLog a CustomLog nemusí záznamy obsahovat jméno domény. Použijte jméno podle vlastní volby.

Serveradmin obsahuje e-mailovou adresu osoby, která má být kontaktována v případě problémů. Apache tuto adresu předává klientům v případě potíží.

30.9.2. Virtuální server založený na IP

Alternativou serveru založeného na jménu je nastavení více IP adres pro jeden jediný počítač. V takovém případě jediná instance Apache hostuje více domén s různými IP adresami. V následujícím příkladu si ukážeme konfiguraci Apache používajícího vlastní IP adresu (192.168.1.10) plus další dvě dodatečné IP adresy (192.168.1.20 a 192.168.1.21). Tento konkrétní příklad funguje pouze na intranetu, protože se jedná o privátní adresy, které nejsou na Internetu směrovány.

30.9.2.1. Nastavení IP aliasů

Aby Apache mohl pracovat s více IP, musí počítač přijímat požadavky na více IP. Tomu se říká multi-IP hosting. Tato funkce vyžaduje podporu IP aliasingu v jádře. Tato podpora je v SUSE Linuxu výchozí.

Pokud je v jádře povolen IP aliasing, lze pomocí příkazů ifconfig a route nastavovat další IP adresy počítače. Tyto příkazy musí vykonávat uživatel root. V následujícím příkladě budeme předpokládat, že počítač již má vlastní IP adresu (např. 192.168.1.10), která je přiřazena zařízení eth0.

Příkazem ifconfig bez parametrů zjistíte IP adresu počítače. Další IP nastavíte příkazem:

ip addr add 192.168.1.20/24 dev eth0

Všechny IP adresy používají stejné síťové fyzické zařízení (eth0).

30.9.2.2. Virtuální počítače s IP

Jakmile je na počítači nastaveno IP aliasování nebo má počítač více síťových karet, můžete nastavit virtuální servery Apache. Pro každý virtuální server musíte vložit vlastní blok VirtualHost:

<VirtualHost 192.168.1.20>
    ServerName www.myothercompany.com
    DocumentRoot /srv/www/htdocs/myothercompany.com
    ServerAdmin webmaster@myothercompany.com
    ErrorLog /var/log/apache2/www.myothercompany.com-error_log
    CustomLog /var/log/apache2/www.myothercompany.com-access_log common
</VirtualHost>

<VirtualHost 192.168.1.21>
    ServerName www.anothercompany.com
    DocumentRoot /srv/www/htdocs/anothercompany.com
    ServerAdmin webmaster@anothercompany.com
    ErrorLog /var/log/apache2/www.anothercompany.com-error_log
    CustomLog /var/log/apache2/www.anothercompany.com-access_log common
</VirtualHost>

Proměnná VirtualHost se používá pouze pro dodatečné domény. Výchozí doména (www.example.com) je nastavena zvlášť v DocumentRoot mimo bloky VirtualHost.

30.9.3. Vícenásobné instance Apache

Při použití výše zmíněných metod může administrátor jedné domény číst data ostatních domén. Abyste jednotlivé domény oddělili, musíte spustit další instance Apache, které budou používat zvláštní nastavení uživatele, skupiny a dalších proměnných v konfiguračním souboru.

V konfiguračním souboru nastavte proměnnou Listen na IP adresy obsluhované jednotlivými instancemi Apache. V našem případě bude zápis pro první instanci:

Listen 192.168.1.10:80

A pro další dvě instance:

Listen 192.168.1.20:80
Listen 192.168.1.21:80

SUSE LINUX Příručka správce systému 9.3