Domů arrow Domů arrow Apache jako proxy
Apache jako proxy PDF Tisk E-mail
Zhlédnutí: 3311
Hodnocení čtenářů: / 1
SlabéVynikající 
Napsal filbar   
Pátek, 30 březen 2007
Aktualizováno ( Čtvrtek, 29 březen 2007 )

Možná některé z vás překvapil název článků, protože si proxy servery spojovali se specializovanými řešeními typu Squid a tuto funkcionalitu by jste od www serveru neočekávali, ale Apache jí nabízí a dokonce se její konfigurace neliší od dříve zažitých postupů.

Apache nabízí dokonce dva režimy proxy serveru. Jeden klasický, kterýumožňuje klientům ve vnitřní síti připojení k internetu spojený scacheováním, tzv. forward proxy. Druhý typ proxy je ten, ve kterémproxy stojí před výsledným www serverem a umožňuje i přesouvat zátěžmezi cílovými servery-reverzní proxy.

Forward Proxy

Začneme klasickou cacheující proxy. Pro toto použití potřebujememoduly mod_cache, mod_disk_cache, mod_mem_cache, mod_proxy_http,mod_proxy_ftp a mod_proxy_connect. Tyto moduly jsou součástí standardníinstalace Apache. Pokud jste jej instalujete ze zdrojových kódů,potřebujete spustít skript configure s přepínači:

--enable-cache--enable-file-cache --enable-disk-cache --enable-mem-cache--enable-proxy --enable-proxy-connect --enable-proxy-ftp--enable-proxy-http

Pokud jsme instalovali Apache ze zdrojových kódů a neměli jsme příslušné moduly nainstalované, musíme je nejprve načíst:

LoadModule cache_module modules/mod_cache.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so

Tyto řádky pro přehlednost doplňte k ostatním načítaným modulům.Dále následuje samotné zapnutí proxy direktivou ProxyRequests On. Dalšíužitečná direktiva nese název ProxyVia a slouží k modifikaci HTTPhlavičky via. Obsahuje 4 možnosti parametru. My použijeme parametr On, kterýpřidá hlavičku aktuální proxy. Pokud hlavičky modifikovat nechcemezapíšeme Off. Parametr full navíc do hlavičky doplní verzi Apache akonečně poslední Block všechny Via hlavičky odstraní.

Mezi řádky <Proxy *> a </Proxy> umístíme omezenípřístupu k dané proxy. Protože nejspíše budujeme proxy pouze pro danoučást sítě a nechceme k ní povolit přístup s nezamýšlených částí sítě,určíme nejprve pořadí dírektiv Deny a Allow:

Order Deny,Allow

Jako první použijeme Deny, abychom zakázali všem přístup a povolili jej pouze žádané podsíti:

Deny from all
Allow from corki.info 192.168.2 10.0.3.200

Tímto jsme povolili přístup z domény corki.info, ze subnetu192.168.2.0/24 a nakonec ještě konkrétní IP adrese 10.0.3.200. Do tétosekce lze také umístit třeba kontrolu přístupu na základě jména ahesla, tak jako k jiným částem stránek nabízených Apachem.

Přístup na nějaké www stránky přímo bez použití proxy povolímedirektivou NoProxy, do jejichž parametrů lze uvést konkrétní adresu,pouze doménovou část názvu, subnet(192.168.1), případně celou IPadresu. Pomocí proxy, která je součástí Apache lze také kontrolovat, kekterým adresám mohou mít klienti přístup a které adresy chceme blokovatdirektivou ProxyBlock. Do parametrů zadáme domény, celé jméno, případněslovo, které stránky nesmějí obsahovat.

V místní síti se může hodit také doplňování domény do jména serveru.Takže například nakonfigurujeme Apache tak, aby po zadání mujserver doprohlížeče se název doplnil na mujserver.corki.info.

ProxyDomain .corki.info

Od této chvíle se názvy, které se nepodaří vyhodnotit doplní na nazev.corki.info.

Taktomáme nakonfigurovanou pouze proxy jako takovou, ale chybí nám ještěukládání prohlédnutých www stránek, což nám zajistí modul mod_cache.Pro začátek určíme, kde se mají soubory cache nacházet direktivouCacheRoot. Důležité je také určit jak velikou část disku může cachezabírat, k tomu použijeme CacheSize, v jejímž parametru se nacházívelikost udávaná v kilobytech. Direktivou CacheDirLevel předáme Apachiúdaj jak nejvíce lze zanořit složky. Maximální délku názvu každéhoadresáře určuje CacheDirLength, přičemž maximum je 20 znaků.

Direktivou Cache enable rozlišíme kam chceme ukládat různé adresářewebu(jestli do paměti, nebo na disk). Toto u forward proxy, ale mocnevyužijeme. Takže stačí zápis, že chceme od kořenového adresářevšechno ukládat do cache na disku:

CacheEnable disk /

Zakázu cacheování určitých stránek dosáhneme direktivou CacheDisable, kde jako parametr použijeme URL adresu daných stránek.

Dalšíčást se týká ukládání obnovování stránek ukládaných do cache. Nejdelšídobu, po kterou bude stránka považována za platnou určíme direktivouCacheMaxExpire, jejíž parametrem je čas v sekundách. Podobnou funkcíplní i CacheDefaultExpire. Pokud uvedeme obě direktivy platí pouzeCacheDefaultExpire. Apachi lze naporučit, aby ukládal do cache idokumenty s nastavenými hlavičkami no-store, nebo no-cache. K tomutoúčřelu slouží direktiva CacheIgnoreCacheControl On.

Provětší šetření šířkou pásma lze ukládat také dokumenty, které neobsahujíúdaj o času poslední modifikace. Toho dosáhneme direktivouCacheIgnoreNoLastMod On. Poslední volba v této oblasti nese názevCacheLastModifiedFactor a určuje faktor pro výpočet času, za jaký mábýt stránka považovaná za neplatnou. Výpočet probáhá podle vzorce časposlední modifikace * CacheLastModifiedFactor. Výsledek se příčte kaktuálnímu času a podle toho se rozhodne jestli je stránka v cachistrále platná, nebo se má použít originální verze.

Reverzní proxy

U reverzní proxy nejprve zadáme ProxyRequests Off, pokud necheme,aby byla zároveň používána jako normální forward proxy. Dále určímejestli k ní mají mít přístup všichni, nebo jenom omezená skupinalidí(Order, Allow, Deny).

Kpředchozím direktivám nám přibýde několik dalších. Na prvním místě tojsou ProxyPass a ProxyPassReverse. Dříve jmenovaná slouží k namapováníurčitého adresáře vzdáleného serveru na lokální adresu. Druhá navíczajistí, aby se odpověď tvářila, jako by skutečně pocházela zevzdáleného serveru. Nejrozumnější je uvádět obě direktivy společně,čímž dosáhneme jak namapování vzdáleného serveru na lokálníadresu, tak funci odkazů na podadresáře v namapovaném odkazu. Pokuduvedeme pouze jednu z nich můžeme se dočkat nepředvídaných výsledků,například že Apache bude hledat adresář na lokálním serveru, kdeadresář neexistuje:

ProxyPass /linpros http://www.linpros.info/yum/
ProxyPassReverse /linpros http://www.linpros.info/yum/

Nyní se nám rovněž bude lépe hodit rozdělení, kam se má jaký adresář ukládat, což určuje direktiva CacheEnable:

CacheEnable disk /web1/images
CacheEnable mem /web1/html

Mimo uložení disk a mem lze použít také fd, které uloží soubory do paměti jako souborové deskriptory.

Tímbychom téma pro tento článek vyčerpali a příště si ukážeme jak spouštětcgi skripty pod určitým uživatelem a také se podíváme na virtuálníhosting ve velkém, neboli-mass virtual hosting.

Komentářů
Přidat Nový Hledat RSS
Přidat komentář
Jméno:
Email:
 
Website:
Název:
UBBKód:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Please input the anti-spam code that you can read in the image.

3.22 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
< Předch.   Další >

Zapomenuté heslo
Nemáte účet? Vytvořte jej!
Skype: My status bartfil
Jabber: bartmann@rupyhost.cz

Doporučujeme

Příběhy psů z útulků