Vyhledávání na webu

Jak nainstalovat Varnish Cache 6 pro Nginx na CentOS/RHEL 8


Varnish Cache (běžně označovaný jako Varnish) je open source, výkonný a rychlý reverzní proxy HTTP akcelerátor s moderní architekturou a flexibilní konfigurační jazyk. Být reverzní proxy jednoduše znamená, že jde o software, který můžete nasadit před svůj webový server (což je původní server nebo backend), jako je Nginx, za účelem přijímání požadavků HTTP klientů a jejich předávání původní server pro zpracování. A doručuje klientům odpověď z původního serveru.

Varnish funguje jako prostředník mezi Nginx a klienty, ale s určitými výkonnostními výhodami. Jeho hlavním účelem je zrychlit načítání vašich aplikací tím, že funguje jako modul mezipaměti. Přijímá požadavky od klientů a předává je jednou backendu, aby se požadovaný obsah uložil do mezipaměti (uložení souborů a fragmentů souborů do paměti). Všechny budoucí požadavky na přesně podobný obsah pak budou obsluhovány z mezipaměti.

Díky tomu se vaše webové aplikace načítají rychleji a nepřímo zlepšuje celkový výkon vašeho webového serveru, protože Varnish bude poskytovat obsah z paměti místo toho, aby Nginx zpracovával soubory z úložného disku.

Kromě ukládání do mezipaměti má Varnish také několik dalších případů použití, včetně směrovače požadavků HTTP a nástroje pro vyrovnávání zatížení, brány firewall webových aplikací a dalších.

lak se konfiguruje pomocí vysoce rozšiřitelného vestavěného jazyka Varnish Configuration Language (VCL), který vám umožňuje psát zásady, jak by měly být příchozí požadavky vyřízeno. Můžete jej použít k vytváření přizpůsobených řešení, pravidel a modulů.

V tomto článku projdeme kroky k instalaci webového serveru Nginx a Varnish Cache 6 na nový CentOS 8 nebo server RHEL 8. Uživatelé RHEL 8 by se měli ujistit, že mají povoleno předplatné redhat.

Chcete-li nastavit kompletní zásobník LEMP namísto instalace samotného webového serveru Nginx, podívejte se na následující průvodce.

  1. Jak nainstalovat LEMP Server na CentOS 8
  2. Jak nainstalovat LEMP Server na RHEL 8

Krok 1: Nainstalujte webový server Nginx na CentOS/RHEL 8

1. CentOS/RHEL 8 se dodává s nejnovější verzí softwaru webového serveru Nginx, takže jej nainstalujeme z výchozího úložiště pomocí následující příkazy dnf.

dnf update
dnf install nginx

2. Po instalaci Nginx je třeba spustit, povolit a ověřit stav pomocí následujících příkazů systemctl.

systemctl start nginx
systemctl enable nginx
systemctl status nginx

3. Pokud jste trochu zvědaví, můžete také zkontrolovat soket Nginx TCP, který standardně běží na portu 80, pomocí následujícího příkazu ss.

ss -tpln

4. Pokud v systému používáte bránu firewall, nezapomeňte aktualizovat pravidla brány firewall, aby povolovala požadavky na webový server.

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload

Krok 2: Instalace Varnish Cache 6 na CentOS/RHEL 8

5. CentOS/RHEL 8 poskytuje ve výchozím nastavení modul Varnish Cache DNF, který obsahuje verzi 6.0 LTS (Dlouhodobá podpora).

Chcete-li nainstalovat modul, spusťte následující příkaz.

dnf module install varnish

6. Po dokončení instalace modulu můžete potvrdit verzi Varnish nainstalovanou ve vašem systému.

varnishd -V

7. Po instalaci Varnish Cache se hlavní spustitelný příkaz nainstalovaný pod /usr/sbin/varnishd a konfigurační soubory laku nacházejí v /etc/lak/.

Soubor /etc/varnish/default.vcl je hlavní konfigurační soubor laku napsaný pomocí VCL a /etc/varnish/secret je lak tajný soubor.

8. Dále spusťte službu Varnish, povolte její automatické spouštění během spouštění systému a potvrďte, že je v provozu.

systemctl start varnish
systemctl enable varnish
systemctl status varnish

Krok 3: Konfigurace Nginx pro práci s mezipamětí laku

9. V této části si ukážeme, jak nakonfigurovat Varnish Cache, aby běžel před Nginx. Ve výchozím nastavení Nginx naslouchá na portu 80, normálně je každý blok serveru (nebo virtuální hostitel) nakonfigurován tak, aby naslouchal na tomto portu.

Podívejte se například na výchozí blok serveru nginx nakonfigurovaný v hlavním konfiguračním souboru (/etc/nginx/nginx.conf).

vi /etc/nginx/nginx.conf

Vyhledejte sekci bloku serveru, jak je znázorněno na následujícím snímku obrazovky.

10. Chcete-li spustit Varnish před Nginx, měli byste změnit výchozí port Nginx z 80 na 8080 (nebo jakýkoli jiný port dle vašeho výběru).

To by mělo být provedeno ve všech budoucích konfiguračních souborech serverových bloků (obvykle vytvořených pod /etc/nginx/conf.d/) pro weby nebo webové aplikace, které chcete poskytovat prostřednictvím Varnish >.

Například serverový blok pro náš testovací web tecmint.lan je /etc/nginx/conf.d/tecmint.lan.conf a má následující konfiguraci.

server {
        listen       8080;
        server_name  www.tecmint.lan;
        root         /var/www/html/tecmint.lan/;
        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}

Důležité: Nezapomeňte zakázat výchozí blok serveru tím, že zakomentujete jeho konfigurační sekci v souboru /etc/nginx/nginx.conf, jak je znázorněno na následujícím snímku obrazovky. To vám umožní spustit na vašem serveru další webové stránky/aplikace, jinak bude Nginx vždy směrovat požadavky na výchozí blok serveru.

11. Po dokončení konfigurace zkontrolujte konfigurační soubor, zda neobsahuje nějaké chyby, a restartujte službu Nginx, aby se použily poslední změny.

nginx -t
systemctl restart nginx

12. Dále, abychom mohli přijímat požadavky HTTP od klientů, musíme nakonfigurovat Varnish tak, aby běžel na portu 80. Na rozdíl od dřívějších verzí Varnish Cache, kde byla tato změna provedena v souboru prostředí Varnish (který je nyní zastaralý), ve verzi 6.0 a vyšší .

Potřebujeme provést požadovanou změnu v souboru služeb Lak. Spuštěním následujícího příkazu otevřete příslušný soubor služby pro úpravy.

systemctl edit --full  varnish

Najděte následující řádek a změňte hodnotu přepínače -a, který určuje adresu a port naslouchání. Nastavte port na 80, jak je znázorněno na následujícím snímku obrazovky.

Pokud nezadáte adresu, varnishd bude naslouchat na všech dostupných rozhraních IPv4 a IPv6 aktivních na serveru.

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Uložte změny do souboru a ukončete.

13. Dále musíte definovat backendový server, který Varnish navštíví, aby načetl obsah. To se provádí v hlavním konfiguračním souboru Varnish.

vi /etc/varnish/default.vcl 

Vyhledejte sekci výchozí konfigurace backendu a změňte řetězec „default “ na server1 (nebo jakýkoli název podle vašeho výběru, který bude reprezentovat váš původní server). Poté nastavte port na 8080 (nebo na Nginx naslouchací port, který jste definovali v bloku serveru).

backend server1 {
    .host = "127.0.0.1";
    .port = "8080";
}

Pro tuto příručku používáme Varnish a Nginx na stejném serveru. Pokud váš webový server Nginx běží na jiném hostiteli. Například jiný server s adresou 10.42.0.247 a poté nastavte parametr .host podle obrázku.

backend server1 {
    .host = "10.42.0.247";
    .port = "8080";
}

Uložte soubor a zavřete jej.

14. Dále je třeba znovu načíst konfiguraci správce systemd kvůli nedávným změnám v souboru služby Varnish a poté restartovat službu Varnish, aby se změny aplikovaly následovně.

systemctl daemon-reload
systemctl restart varnish

15. Nyní potvrďte, že Nginx a Varnish naslouchají na nakonfigurovaných TCP soketech.

ss -tpln

Krok 4: Testování nastavení mezipaměti laku Nginx

16. Dále ověřte, že se webové stránky zobrazují prostřednictvím Vyrovnávací paměti laku následujícím způsobem. Otevřete webový prohlížeč a procházejte se pomocí IP serveru nebo FDQN, jak je znázorněno na následujícím snímku obrazovky.

http://www.tecmin.lan
OR
http://10.42.0.144

17. Případně použijte příkaz curl, jak je znázorněno. Použijte IP adresu vašeho serveru nebo FQDN webu nebo použijte 127.0.0.1 nebo localhost, pokud testujete lokálně.

curl -I http:///www.tecmint.lan

Užitečné nástroje pro správu mezipaměti laku

18. V této poslední části stručně popíšeme některé užitečné obslužné programy, se kterými je Varnish Cache dodávána a které můžete použít k ovládání lak >, přístup k protokolům v paměti a celkovým statistikám a další.

lakadm

varnishadm nástroj pro ovládání spuštěné instance Varnish. Naváže spojení CLI s lakovaným. Můžete jej například použít k zobrazení seznamu nakonfigurovaných backendů, jak je znázorněno na následujícím snímku obrazovky (další informace si přečtěte manlakadm).

varnishadm
varnish> backend.list

laklog

Nástroj varnishlog poskytuje přístup k datům specifickým pro požadavek. Nabízí informace o konkrétních klientech a požadavcích (více informací si přečtěte manlaklog).

varnishlog

lakstat

statistika laku, také známá jako statistika laku, která vám poskytuje pohled na aktuální výkon laku tím, že poskytuje přístup ke statistikám v paměti, jako jsou přístupy a vynechání mezipaměti, informace o úložišti , vytvořená vlákna, smazané objekty (další informace si přečtěte man lakstat).

varnishstat 

laková deska

Nástroj varnishtop čte protokoly sdílené paměti a představuje průběžně aktualizovaný seznam nejčastěji se vyskytujících položek protokolu (další informace naleznete v části man laktop).

varnishtop 

lakýrník

Nástroj lakhist (historie laku) analyzuje protokoly laku a vydává průběžně aktualizovaný histogram zobrazující rozložení posledních n požadavků podle jejich zpracování ( pro více informací si přečtětemanlakhist).

varnishhist

To je vše! V této příručce jsme si ukázali, jak nainstalovat Varnish Cache a spustit ji před serverem Nginx HTTP, abychom urychlili doručování webového obsahu v CentOS/RHEL 8<.

Jakékoli myšlenky nebo dotazy týkající se této příručky můžete sdílet pomocí formuláře pro zpětnou vazbu níže. Další informace naleznete v dokumentaci mezipaměti laku.

Hlavní nevýhodou Varnish Cache je nedostatek nativní podpory pro HTTPS. Chcete-li na svém webu/aplikaci povolit HTTPS, musíte nakonfigurovat ukončovací proxy SSL/TLS, aby fungoval ve spojení s Varnish Cache a chránil tak váš web. V našem dalším článku si ukážeme, jak povolit HTTPS pro Varnish Cache pomocí Hitch na CentOS/RHEL 8.