Installeer Varnish Cache 6 voor Apache/Nginx op CentOS 8

Varnish Cache is een krachtige reverse HTTP proxy die gebruikt wordt om webapplicaties te versnellen en die beschikbaar is als Open-Source software. Varnish cached zowel statische als dynamische inhoud. Het behandelt alle inkomende verzoeken voordat ze op je web server backend landen. Het zit tussen een web browser en Apache of Nginx webserver. Varnish cache slaat alle inkomende pagina aanvragen op in het geheugen zodat webservers niet steeds opnieuw dezelfde webpagina hoeven te maken.

In deze post laten we je zien hoe je Varnish cache met Apache en Nginx op CentOS 8 kunt installeren.

Vereisten

  • Een server die CentOS 8 draait.
  • Een root wachtwoord is op je server ingesteld.

Aan de slag

Alvorens te beginnen is het aan te raden je systeempakketten bij te werken tot de laatste versie. Je kunt ze bijwerken door het volgende commando uit te voeren:

dnf update -y

Als alle pakketten zijn bijgewerkt, kun je verder gaan met de volgende stap.

Installeer Varnish

Standaard is het Varnish pakket opgenomen in de CentOS 8 standaard repo. Je kunt het installeren door het volgende commando uit te voeren:

dnf install varnish -y

Bewerk na de installatie van Varnish het Varnish standaard configuratiebestand en definieer het backed adres van de Nginx of Apache webserver.

nano /etc/varnish/default.vcl

Verander de volgende regels:

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

Bewaar en sluit het bestand als je klaar bent.

Vernis instellen

Standaard luistert Varnish op poort 6081. Je zult Varnish dus moeten instellen om te luisteren op poort 80. Je kunt dit instellen door het bestand varnish.service te bewerken:

nano /lib/systemd/system/varnish.service

Zoek de volgende regel:

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

Vervang hem door de volgende regel:

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

Bewaar en sluit het bestand en herlaad dan de systemd daemon om de veranderingen toe te passen:

systemctl daemon-reload

Start vervolgens de Varnish service en zet hem aan om te starten bij het herstarten van het systeem met het volgende commando:

systemctl start varnish
systemctl enable varnish

Je kunt ook de status van de Varnish controleren met het volgende commando:

systemctl status varnish

Je zou de volgende uitvoer moeten krijgen:

? varnish.service - Varnish Cache, a high-performance HTTP accelerator
   Loaded: loaded (/usr/lib/systemd/system/varnish.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2021-03-12 04:17:32 EST; 4s ago
  Process: 6391 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS)
 Main PID: 6392 (varnishd)
    Tasks: 217
   Memory: 99.5M
   CGroup: /system.slice/varnish.service
           ??6392 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
           ??6402 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Mar 12 04:17:32 masternode systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator...
Mar 12 04:17:32 masternode varnishd[6391]: Debug: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7
Mar 12 04:17:32 masternode varnishd[6391]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Mar 12 04:17:32 masternode varnishd[6392]: Version: varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7
Mar 12 04:17:32 masternode varnishd[6392]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Mar 12 04:17:32 masternode varnishd[6391]: Debug: Child (6402) Started
Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) Started
Mar 12 04:17:32 masternode varnishd[6392]: Child (6402) said Child starts
Mar 12 04:17:32 masternode systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.

Op dit moment is Varnish gestart en luistert het op poort 80. Je kunt het controleren met het volgende commando:

ss -antpl | grep varnishd

Je zou de volgende uitvoer moeten krijgen:

LISTEN    0         10               127.0.0.1:34977            0.0.0.0:*        users:(("varnishd",pid=1532,fd=11))                                            
LISTEN    0         128                0.0.0.0:80               0.0.0.0:*        users:(("cache-main",pid=1542,fd=6),("varnishd",pid=1532,fd=6))                
LISTEN    0         128                   [::]:80                  [::]:*        users:(("cache-main",pid=1542,fd=7),("varnishd",pid=1532,fd=7))                
LISTEN    0         10                   [::1]:34909               [::]:*        users:(("varnishd",pid=1532,fd=10))                                            

Op dit punt is Varnish geïnstalleerd en geconfigureerd. Je kunt nu verder gaan met de volgende stap.

Installeer en configureer Nginx om met Varnish te werken

Eerst moet je het Nginx pakket op je server installeren. Je kunt het installeren met het volgende commando:

dnf install nginx -y

Eenmaal geïnstalleerd moet je de Nginx luisterpoort veranderen van 80 in 8080. Je kunt dat doen door het Nginx standaard configuratiebestand te bewerken:

nano /etc/nginx/nginx.conf

Verander de volgende regels:

        listen       8080 default_server;
        listen       [::]:8080 default_server;

Bewaar en sluit het bestand en controleer Nginx dan op een eventuele syntaxfout met het volgende commando:

nginx -t

Je zou de volgende uitvoer moeten krijgen:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Start vervolgens de Nginx service en zet hem aan om te starten bij het herstarten van het systeem:

systemctl start nginx
systemctl enable nginx

Je kunt ook de Nginx luisterpoort verifiëren met het volgende commando:

ss -antpl | grep 8080

Je zou de volgende uitvoer moeten krijgen:

LISTEN    0         128                0.0.0.0:8080             0.0.0.0:*        users:(("nginx",pid=5569,fd=8),("nginx",pid=5568,fd=8))                        
LISTEN    0         128                   [::]:8080                [::]:*        users:(("nginx",pid=5569,fd=9),("nginx",pid=5568,fd=9))                        

Op dit punt is de Varnish cache geïnstalleerd en ingesteld om alle verzoeken die op poort 80 komen door te sturen naar de Nginx webserver die luistert op poort 8080.

Je kunt controleren of de Varnish cache werkt of niet met het volgende commando:

curl -I http://localhost

Je zou de volgende uitvoer moeten krijgen:

HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Fri, 12 Mar 2021 09:18:32 GMT
Content-Type: text/html
Content-Length: 4057
Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT
ETag: "5d9bab28-fd9"
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.0)
Accept-Ranges: bytes
Connection: keep-alive

Installeer en configureer Apache om met Varnish te werken

Eerst moet je het Apache webserver pakket op je systeem installeren. Je kunt het installeren met het volgende commando:

dnf install httpd -y

Na de installatie van Apache, bewerk je het Apache standaard configuratiebestand en verander je de luisterpoort van 80 in 8080.

nano /etc/httpd/conf/httpd.conf

Verander de volgende regel:

Listen 8080

Bewaar en sluit het bestand en start dan de Apache dienst en zet hem aan om te starten bij het herstarten van het systeem met het volgende commando:

systemctl start httpd
systemctl enable httpd

Je kunt de Apache luisterpoort ook verifiëren met het volgende commando:

ss -antpl | grep httpd

Je zou de volgende uitvoer moeten krijgen:

LISTEN    0         128                      *:8080                   *:*        users:(("httpd",pid=7556,fd=4),("httpd",pid=7555,fd=4),("httpd",pid=7554,fd=4),("httpd",pid=7552,fd=4))

Op dit punt is de Varnish cache geïnstalleerd en ingesteld om alle verzoeken die op poort 80 komen door te sturen naar de Apache webserver die luistert op poort 8080.

Je kunt controleren of de Varnish cache werkt of niet met het volgende commando:

curl -I http://localhost

Je zou de volgende uitvoer moeten krijgen:

Date: Fri, 12 Mar 2021 09:21:14 GMT
Server: Apache/2.4.37 (centos)
Content-Location: index.html.zh-CN
Vary: negotiate,accept-language
TCN: choice
Last-Modified: Fri, 14 Jun 2019 03:37:43 GMT
ETag: "fa6-58b405e7d6fc0;5bd5365602e05"
Accept-Ranges: bytes
Content-Length: 4006
Content-Type: text/html; charset=UTF-8
Content-Language: zh-cn
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.0)
Connection: keep-alive

Werken met Varnish commandolijn

Varnish wordt geleverd met verschillende handige hulpprogramma’s die je helpen Varnish te bewaken en te controleren.

varnishadm is een commandoregel hulpprogramma dat gebruikt wordt om geconfigureerde backends op te sommen.

varnishadm

Je zou de volgende uitvoer moeten zien:

200        
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
varnish-6.0.6 revision 29a1a8243dbef3d973aec28dc90403188c1dc8e7

Type 'help' for command list.
Type 'quit' to close CLI session.

Voer nu het volgende commando uit om alle backends op te sommen:

varnish> backend.list

Je zou de volgende uitvoer moeten zien:

200        
Backend name                   Admin      Probe                Last updated
boot.default                   probe      Healthy (no probe)   Sat, 13 Mar 2021 03:00:02 GMT

varnishlog

Het varnishlog hulpprogramma wordt gebruikt om de logs van alle gebruikersverzoeken weer te geven.

varnishlog

Je zou de volgende uitvoer moeten krijgen:

*   << BeReq    >> 6         
-   Begin          bereq 5 fetch
-   VCL_use        boot
-   Timestamp      Start: 1615604631.507187 0.000000 0.000000
-   BereqMethod    GET
-   BereqURL       /
-   BereqProtocol  HTTP/1.1
-   BereqHeader    Host: 69.87.218.214
-   BereqHeader    Upgrade-Insecure-Requests: 1
-   BereqHeader    User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36
-   BereqHeader    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
-   BereqHeader    Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
-   BereqHeader    X-Forwarded-For: 106.213.193.241
-   BereqHeader    Accept-Encoding: gzip
-   BereqHeader    X-Varnish: 6
-   VCL_call       BACKEND_FETCH
-   VCL_return     fetch
-   BackendOpen    31 boot.default 127.0.0.1 8080 127.0.0.1 58860
-   BackendStart   127.0.0.1 8080
-   Timestamp      Bereq: 1615604631.507458 0.000270 0.000270
-   Timestamp      Beresp: 1615604631.507844 0.000657 0.000386
-   BerespProtocol HTTP/1.1
-   BerespStatus   200
-   BerespReason   OK
-   BerespHeader   Server: nginx/1.14.1
-   BerespHeader   Date: Sat, 13 Mar 2021 03:03:51 GMT
-   BerespHeader   Content-Type: text/html
-   BerespHeader   Content-Length: 4057
-   BerespHeader   Last-Modified: Mon, 07 Oct 2019 21:16:24 GMT

varnishstat

Het varnishstat commando geeft je informatie over in-memory statistieken, opslag, aangemaakte threads, en verwijderde objecten.

varnishstat

Je zou het volgende scherm moeten zien:

Vernis statistieken

varnishtop

Het varnishtop commando leest varnishd gedeelde geheugen logs en presenteert een voortdurend bijgewerkte lijst van de meest voorkomende log entries.

varnishtop

Je zou het volgende scherm moeten zien:

vernis top

varnishhist

Varnishhist parseert de varnish logs en drukt de laatste n verzoeken af op hun verwerking.

varnishhist

Je zou het volgende scherm moeten zien:

varnishhist

Conclusie

In de bovenstaande gids heb je geleerd hoe je Varnish cache kunt installeren en instellen met Apache en Nginx webserver. Je kunt nu Varnish cache in de productie omgeving implementeren en de prestaties van je website versnellen. Voel je vrij me te vragen als je vragen hebt.