Manual:Varnish caching/cs

Varnish je lehký a efektivní reverzní proxy server, který zkracuje čas potřebný k obsluhování často požadovaných stránek.

Varnish je HTTP akcelerátor, který ukládá kopie stránek obsluhovaných webovým serverem. Při příštím požadavku na stejnou stránku Varnish poskytne kopii namísto vyžádání stránky ze serveru Apache. Tento proces ukládání do mezipaměti odstraňuje potřebu, aby MediaWiki znovu obnovovala stejnou stránku, což má za následek ohromné zvýšení výkonu.

Varnish má tu výhodu, že je navržen speciálně pro použití jako HTTP akcelerátor (reverzní proxy). Ukládá většinu dat uložených v mezipaměti do paměti, čímž vytváří méně diskových souborů a méně přístupů k souborovému systému než větší, víceúčelový balíček na. Stejně jako Squid poskytuje často požadované stránky uživatelům s anonymními IP z mezipaměti místo toho, aby je požadoval z původního webového serveru. To snižuje využití procesoru i přístup k databázi základním serverem MediaWiki.

Kvůli tomuto zvýšení výkonu byla MediaWiki navržena tak, aby se úzce integrovala s webovou mezipamětí a upozorní Squid nebo Varnish, když by měla být stránka vymazána z mezipaměti, aby byla obnovena.

Z pohledu MediaWiki je správně nakonfigurovaná instalace Varnish zaměnitelná se svým protějškem Squid.



Architektura
Níže je uveden příklad nastavení Varnish, Apache a MediaWiki na jednom serveru. Složitější strategie ukládání do mezipaměti může používat více webových serverů za stejnými mezipamětmi Varnish (všechny mohou vypadat jako jeden hostitel) nebo používat nezávislé servery k doručování obsahu wiki nebo obrázků.

Pro vnější svět se zdá, že Varnish funguje jako webový server. Ve skutečnosti předává požadavky na webový server Apache, ale pouze v případě potřeby. Apache běžící na stejném serveru pouze naslouchá požadavkům z localhost (127.0.0.1), zatímco Varnish naslouchá pouze požadavkům na externí IP adrese serveru. Obě služby běží na portu 80 bez konfliktu, protože každá je vázána na jinou IP adresu.



Nastavujeme Varnish
Následující konfigurace funguje pro Varnish verze 4 a vyšší.



Nastavujeme MediaWiki
Protože Varnish provádí požadavky z localhost, Apache obdrží "127.0.0.1" jako přímou vzdálenou adresu. Jak však Varnish předává požadavky Apache, je nakonfigurován tak, aby přidal hlavičku :X-Forwarded-For:, aby byla zachována vzdálená adresa z vnějšího světa. MediaWiki musí být nakonfigurováno tak, aby používala hlavičku "X-Forwarded-For", aby správně zobrazovala adresy uživatelů v special:recentchanges.

Požadovaná konfigurace je stejná pro Squid i pro Varnish. Ujistěte se, že soubor LocalSettings.php obsahuje následující řádky:

Nezapomeňte nahradit '192.168.0.1' IP adresou, na které naslouchá vaše mezipaměť Varnish. Tato nastavení slouží ke dvěma účelům:
 * Pokud je přijat požadavek z mezipaměti Varnish serveru, musí protokoly MediaWiki zobrazovat IP adresu uživatele, nikoli adresu Varnish. special:recentchanges, ve kterém je každá úprava hlášena jako '127.0.0.1', je téměř k ničemu. Uvedení této adresy jako serveru Squid/Varnish říká MediaWiki, aby ignorovala IP adresu a místo toho se podívala na hlavičku 'x-forwarded-for' pro IP uživatele.
 * Pokud dojde ke změně stránky nebo obrázku na wiki, MediaWiki zašle upozornění na každý server uvedený v, že má zahodit (vymazat) zastaralou uloženou stránku.

Použijte pro adresy, které je třeba chránit před nedávnými změnami, ale které nepřijímají zprávy HTTP PURGE. Například, pokud jsou Apache a Squid na 127.0.0.1 a externí adresa na stejném počítači, není potřeba posílat Apache "očišťovací" zprávu určenou pro Squid. Stejně tak, pokud Squid poslouchá více adres, pošlete "purge" pouze na jednu z nich.

Viz také Nastavení konfigurace Squid pro všechna nastavení související s ukládáním do mezipaměti Squid/Varnish.

Pokud používáte HTTPS, nezapomeňte nastavit na stejnou hodnotu jako, ale s protokolem http://, abyste zabránili odesílání požadavků na vyčištění jako HTTPS, protože Varnish HTTPS nepodporuje.



Několik poznámek
Všimněte si, že Varnish je alternativou k Squid, ale nenahrazuje jiné části kompletní strategie ukládání do mezipaměti MediaWiki, jako například:


 * Předkompilovaný PHP kód: Výchozí chování PHP pod Apache je načíst a interpretovat PHP webové skripty při každém přístupu. Instalace mezipaměti, jako je APC (, poté alokovat paměť nastavením  nebo lepší na  ), může výrazně snížit množství času procesoru, který Apache potřebuje k poskytování obsahu PHP.
 * Lokalizace/Internacionalizace: Ve výchozím nastavení MediaWiki vytvoří obrovskou databázovou tabulku na  a bude k ní neustále přistupovat - možná více než zdvojnásobení zatížení databázového serveru po "aktualizaci" na nejnovější verzi MediaWiki. Set  to force the localisation information to be stored to the file system to remedy this.
 * Variables and session data : Storing variable data such as the MediaWiki sidebar, the list of namespaces or the spam blacklist to a memory cache will substantially increase the speed of a MediaWiki installation. Forcing user login data to be stored in a common location is also essential to any installation in which multiple, interchangeable Apache servers are hidden behind the same Varnish caches to serve pages for the same wikis. Install the memcached package and set the following options in to force both user login information and cached variables to use memcache:
 * Note that, if you have multiple servers, the localhost address needs to be replaced with that of the shared memcached server(s), which must be the same for all of the matching web servers at your site. This ensures that logging a user into one server in the cluster logs them into the wiki on all the interchangeable web servers.
 * Note that, if you have multiple servers, the localhost address needs to be replaced with that of the shared memcached server(s), which must be the same for all of the matching web servers at your site. This ensures that logging a user into one server in the cluster logs them into the wiki on all the interchangeable web servers.
 * Note that, if you have multiple servers, the localhost address needs to be replaced with that of the shared memcached server(s), which must be the same for all of the matching web servers at your site. This ensures that logging a user into one server in the cluster logs them into the wiki on all the interchangeable web servers.
 * Note that, if you have multiple servers, the localhost address needs to be replaced with that of the shared memcached server(s), which must be the same for all of the matching web servers at your site. This ensures that logging a user into one server in the cluster logs them into the wiki on all the interchangeable web servers.

In many cases, there are multiple alternative caching approaches which will produce the same result. See.



Log file
The Apache web server log, by default, shows only the address of the Varnish cache server, in this example "127.0.0.1:80"

Apache may be configured to log the original user's address by capturing "x-forwarded-for" information under a custom log file format.

An example for Apache's httpd.conf to configure logging of x-forwarded-for is:

Image hotlinking
If a site uses Apache's  to block attempts by other websites to hotlink images, this configuration will need to be removed and equivalent configuration added to Varnish's configuration files. Where an image server is located behind Varnish, typically 90% or more of common image requests never reach Apache and therefore will not be blocked by a "http_referer" check in Apache's configurations.



Viz též

 * Varnish in Layman's Terms
 * Varnish in Layman's Terms
 * Varnish in Layman's Terms