Domů > IT > Virtual hosty dynamicky

Virtual hosty dynamicky

Znáte to. Dostanete zakázku na nějakou webovou aplikaci nebo webovky. A teď to všechno začíná. Nastavit virtual host v Apache a take v /etc/hosts. Pokaždé znovu a znovu kopírování bloků textu konfiguračního souboru Apache, ve kterých upravíte pouze hostname a document root a vše ostatní zůstane stejné. Dále je třeba nastavit hostname i v /etc/hosts, restartovat Apache a vyzkoušet, zda se vše chová tak, jak bychom chtěli. A co když to všechno jde dělat rychleji nebo dokonce automaticky?

Stejnou otázku jsem si položil i já a našel jsem odpověď. Část špinavé práce za nás uděla modul do Apache mod_vhost_alias. Ten umožňuje dynamicky generovat document root na základě hostname. Po jeho aktivaci přidáme do konfiguračního souboru třeba takovouto deklaraci:

<VirtualHost *:80>
	ServerName loc
	ServerAlias *.loc
	VirtualDocumentRoot /var/www/%-2+/
</VirtualHost>

Tato deklarace nám zajistí, že pokud Apache dostane požadavek třeba na http://test.loc/, tak bude hledat obsah v adresáři /var/www/test/. Pokud hostname bude http://m.test.loc/, tak odpovídající adresář je /var/www/m.test/. A tak dále a tak dále.

To bychom pořád museli přidat do /etc/hosts řádek:

127.0.0.1 test.loc m.test.loc

Tomu se dá elegantně předejít pomocí tzv. PAC souborů. Ty nám umožnůjí konfigurovat proxy. Připravíme si tedy soubor třeba proxy.pac s obsahem:

function FindProxyForURL(url, host) {
	if (shExpMatch(host,"*.loc")) { return "PROXY localhost"; }
	return "DIRECT";
}

Ten nám říká, že pokud host končí „.loc“, tak mu odpovídá localhost (127.0.0.1). Teď už nám stačí v nastavení prohlížeče najít nastavení proxy a zvolit a něco jako „skript pro automatickou konfuguraci“ a vložit:

file:///var/www/proxy.pac

za předpokladu, že pac soubor máme ve složce /var/www/. Toto nastavení by měl umožňovat Firefox, Chrome, IE i Safari.

Categories: IT Tags: ,
*