Varnish Cache je bezplatný a open source reverzní proxy HTTP akcelerátor pro webové stránky a rozhraní API. Lze jej nainstalovat jako reverzní proxy před libovolný webový server běžící na HTTP. Nachází se mezi webovým serverem a prohlížečem a ukládá webové stránky, soubory cookie a další data do paměti. Tato mezipaměť bude sloužit pro všechny budoucí požadavky na přesně podobný obsah. To zvýší zatížení webové aplikace a zlepší výkon webového serveru více než 300krát.
V tomto tutoriálu nastavíme server Nginx jako backend server a nakonfigurujeme jej tak, aby naslouchal na portu 8080, poté nakonfigurujeme mezipaměť Varnish, aby naslouchala na výchozím portu HTTP 80.
Předpoklady
- Server se systémem CentOS 8.
- Na serveru je nakonfigurováno heslo uživatele root.
Instalace a konfigurace webového serveru Nginx
Nejprve budete muset do svého systému nainstalovat webový server Nginx. Můžete jej nainstalovat pomocí následujícího příkazu:
dnf install nginx -y
Po instalaci spusťte službu Nginx a povolte její spuštění při restartu systému pomocí následujícího příkazu:
systemctl start nginx
systemctl enable nginx
Ve výchozím nastavení Nginx naslouchá na portu 80. Budete tedy muset nakonfigurovat Nginx tak, aby naslouchal na portu 80. Můžete jej nakonfigurovat úpravou výchozího konfiguračního souboru Nginx:
nano /etc/nginx/nginx.conf
Najděte následující řádky:
listen 80 default_server; listen [::]:80 default_server;
A nahraďte je následujícími řádky:
listen 8080 default_server; listen [::]:8080 default_server;
Po dokončení uložte a zavřete soubor. Poté restartujte službu Nginx, abyste použili změny:
systemctl restart nginx
V tomto okamžiku je webový server Nginx nainstalován a naslouchá na portu 8080. Můžete to zkontrolovat pomocí následujícího příkazu:
netstat -tpln | grep 8080
Měli byste získat následující výstup:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: master tcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master
Instalovat mezipaměť laku
Ve výchozím nastavení je balíček Varnish dostupný ve výchozím úložišti CentOS 8. Můžete jej nainstalovat pouhým spuštěním následujícího příkazu:
dnf module install varnish
Po instalaci spusťte službu Varnish pomocí následujícího příkazu:
systemctl start varnish
Nainstalovanou verzi mezipaměti Varnish můžete také ověřit pomocí následujícího příkazu:
varnishd -V
Měli byste vidět následující výstup:
varnishd (varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91) Copyright (c) 2006 Verdens Gang AS Copyright (c) 2006-2018 Varnish Software AS
Konfigurovat lak pro Nginx
Dále budete muset nakonfigurovat lak tak, aby běžel na portu 80 pro příjem požadavků HTTP od klientů. Můžete jej nakonfigurovat úpravou výchozího konfiguračního souboru Varnish:
systemctl edit --full varnish
Najděte následující řádek:
ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
A nahraďte jej následujícím řádkem:
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Po dokončení uložte a zavřete soubor.
Dále budete muset definovat backend server pro Varnish. Můžete to udělat úpravou hlavního konfiguračního souboru Varnish /etc/varnish/default.vcl:
nano /etc/varnish/default.vcl
Změňte následující řádky:
backend myserver { .host = "127.0.0.1"; .port = "8080"; }
Po dokončení uložte a zavřete soubor. Poté znovu načtěte démona systemd pomocí následujícího příkazu:
systemctl daemon-reload
Dále restartujte službu Varnish a povolte její spuštění při restartu systému pomocí následujícího příkazu:
systemctl restart varnish
systemcl enable varnish
Stav laku můžete také ověřit pomocí následujícího příkazu:
systemctl status varnish
Měli byste získat následující výstup:
? varnish.service - Varnish Cache, a high-performance HTTP accelerator Loaded: loaded (/etc/systemd/system/varnish.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2020-08-29 09:36:58 EDT; 12s ago Process: 30421 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS) Main PID: 30424 (varnishd) Tasks: 217 Memory: 91.8M CGroup: /system.slice/varnish.service ??30424 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m ??30434 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m Aug 29 09:36:57 centos8 systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator... Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91 Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Aug 29 09:36:58 centos8 varnishd[30424]: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91 Aug 29 09:36:58 centos8 varnishd[30424]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Child (30434) Started Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) Started Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) said Child starts Aug 29 09:36:58 centos8 systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.
Nyní můžete ověřit naslouchací port Nginx a Varnish pomocí následujícího příkazu:
netstat -tpln | grep 80
Měli byste vidět následující výstup:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 30424/varnishd tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: master tcp6 0 0 :::80 :::* LISTEN 30424/varnishd tcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master
Konfigurovat SELinux a bránu firewall
Ve výchozím nastavení je SELinux povolen v CentOS 8. Takže budete muset nakonfigurovat SELinux pro Varnish. Můžete jej nakonfigurovat pomocí následujícího příkazu:
setsebool -P httpd_can_network_connect 1
Dále budete muset povolit port 80 přes firewall. Můžete to udělat pomocí následujícího příkazu:
firewall-cmd --permanent --zone public --add-port 80/tcp
firewall-cmd --reload
Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Testovací mezipaměť laku
V tomto okamžiku je mezipaměť Varnish nainstalována a nakonfigurována pomocí webového serveru Nginx. Nyní je čas otestovat, zda mezipaměť Varnish funguje nebo ne.
Můžete to otestovat pomocí příkazu curl, jak je znázorněno níže:
curl -I http://localhost
Měli byste vidět následující výstup:
HTTP/1.1 200 OK Server: nginx/1.14.1 Date: Sat, 29 Aug 2020 13:53:44 GMT Content-Type: text/html; charset=UTF-8 X-Powered-By: PHP/7.2.24 X-Varnish: 32800 Age: 0 Via: 1.1 varnish (Varnish/6.0) Accept-Ranges: bytes Connection: keep-alive
Závěr
Gratulujeme! úspěšně jste nainstalovali Varnish Cache s Nginx na CentOS 8. Doufám, že můžete také snadno nakonfigurovat Varnish cache s webovým serverem Apache. Neváhejte se mě zeptat, pokud máte nějaké otázky.