Installieren von Varnish Cache 6 für Apache/Nginx auf CentOS 8

Varnish Cache ist ein leistungsstarker Reverse-HTTP-Proxy zur Beschleunigung von Webanwendungen, der als Open-Source-Software verfügbar ist. Varnish zwischenspeichert sowohl statische als auch dynamische Inhalte. Er bearbeitet alle eingehenden Anfragen, bevor sie auf Ihrem Webserver-Backend landen. Er sitzt zwischen einem Webbrowser und dem Apache- oder Nginx-Webserver. Der Varnish-Cache speichert alle eingehenden Seitenanfragen im Speicher, so dass Webserver die gleiche Webseite nicht immer wieder neu erstellen müssen.

In diesem Beitrag zeigen wir Ihnen, wie Sie Varnish-Cache mit Apache und Nginx auf CentOS 8 installieren.

Voraussetzungen

  • Ein Server, auf dem CentOS 8 läuft.
  • Ein Root-Passwort ist auf Ihrem Server konfiguriert.

Erste Schritte

Bevor Sie beginnen, ist es empfehlenswert, Ihre Systempakete auf die neueste Version zu aktualisieren. Sie können sie aktualisieren, indem Sie den folgenden Befehl ausführen:

dnf update -y

Sobald alle Pakete aktualisiert sind, können Sie mit dem nächsten Schritt fortfahren.

Varnish installieren

Standardmäßig ist das Varnish-Paket im CentOS 8-Standard-Repository enthalten. Sie können es installieren, indem Sie den folgenden Befehl ausführen:

dnf install varnish -y

Nach der Installation von Varnish bearbeiten Sie die Varnish-Standardkonfigurationsdatei und definieren die Nginx- oder Apache-Webserver-Backed-Adresse.

nano /etc/varnish/default.vcl

Ändern Sie die folgenden Zeilen:

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

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Varnish konfigurieren

Standardmäßig lauscht Varnish auf Port 6081. Daher müssen Sie Varnish so konfigurieren, dass es auf Port 80 lauscht. Sie können dies konfigurieren, indem Sie die Datei varnish.service bearbeiten:

nano /lib/systemd/system/varnish.service

Suchen Sie die folgende Zeile:

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

Ersetzen Sie sie durch die folgende Zeile:

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

Speichern und schließen Sie die Datei und laden Sie den systemd-Daemon neu, um die Änderungen zu übernehmen:

systemctl daemon-reload

Starten Sie als nächstes den Varnish-Dienst und aktivieren Sie, dass er beim Neustart des Systems gestartet wird, mit dem folgenden Befehl:

systemctl start varnish
systemctl enable varnish

Sie können den Status von Varnish auch mit dem folgenden Befehl überprüfen:

systemctl status varnish

Sie sollten die folgende Ausgabe erhalten:

? 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.

Zu diesem Zeitpunkt ist Varnish gestartet und lauscht auf Port 80. Sie können dies mit dem folgenden Befehl überprüfen:

ss -antpl | grep varnishd

Sie sollten die folgende Ausgabe erhalten:

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))                                            

An dieser Stelle ist Varnish installiert und konfiguriert. Sie können nun mit dem nächsten Schritt fortfahren.

Installieren und konfigurieren Sie Nginx für die Zusammenarbeit mit Varnish

Zuerst müssen Sie das Nginx-Paket auf Ihrem Server installieren. Sie können es mit dem folgenden Befehl installieren:

dnf install nginx -y

Sobald es installiert ist, müssen Sie den Nginx-Listening-Port von 80 auf 8080 ändern. Dies können Sie tun, indem Sie die Standardkonfigurationsdatei von Nginx bearbeiten:

nano /etc/nginx/nginx.conf

Ändern Sie die folgenden Zeilen:

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

Speichern und schließen Sie die Datei und überprüfen Sie dann Nginx mit dem folgenden Befehl auf Syntaxfehler:

nginx -t

Sie sollten die folgende Ausgabe erhalten:

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

Starten Sie als Nächstes den Nginx-Dienst und aktivieren Sie ihn so, dass er beim Neustart des Systems gestartet wird:

systemctl start nginx
systemctl enable nginx

Sie können auch den Nginx-Listening-Port mit dem folgenden Befehl überprüfen:

ss -antpl | grep 8080

Sie sollten die folgende Ausgabe erhalten:

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))                        

Zu diesem Zeitpunkt ist der Varnish-Cache installiert und so konfiguriert, dass er alle auf Port 80 eingehenden Anfragen an den Nginx-Webserver weiterleitet, der auf Port 8080 lauscht.

Sie können mit folgendem Befehl überprüfen, ob der Varnish-Cache funktioniert oder nicht:

curl -I http://localhost

Sie sollten die folgende Ausgabe erhalten:

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

Installieren und konfigurieren Sie Apache für die Zusammenarbeit mit Varnish

Zunächst müssen Sie das Apache-Webserver-Paket auf Ihrem System installieren. Sie können es mit dem folgenden Befehl installieren:

dnf install httpd -y

Nach der Installation von Apache bearbeiten Sie die Apache-Standardkonfigurationsdatei und ändern den Listening-Port von 80 auf 8080.

nano /etc/httpd/conf/httpd.conf

Ändern Sie die folgende Zeile:

Listen 8080

Speichern und schließen Sie die Datei, starten Sie dann den Apache-Dienst und aktivieren Sie, dass er beim Neustart des Systems mit dem folgenden Befehl gestartet wird:

systemctl start httpd
systemctl enable httpd

Sie können den Apache-Listening-Port auch mit dem folgenden Befehl überprüfen:

ss -antpl | grep httpd

Sie sollten die folgende Ausgabe erhalten:

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))

Zu diesem Zeitpunkt ist der Varnish-Cache installiert und so konfiguriert, dass er alle auf Port 80 eingehenden Anfragen an den Apache-Webserver weiterleitet, der auf Port 8080 lauscht.

Mit dem folgenden Befehl können Sie überprüfen, ob der Varnish-Cache funktioniert oder nicht:

curl -I http://localhost

Sie sollten die folgende Ausgabe erhalten:

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

Arbeiten mit Varnish Kommandozeile

Varnish wird mit mehreren nützlichen Dienstprogrammen geliefert, die Ihnen helfen, Varnish zu überwachen und zu steuern.

varnishadm ist ein Kommandozeilen-Dienstprogramm, mit dem Sie konfigurierte Backends auflisten können.

varnishadm

Sie sollten die folgende Ausgabe sehen:

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.

Führen Sie nun den folgenden Befehl aus, um alle Backends aufzulisten:

varnish> backend.list

Sie sollten die folgende Ausgabe sehen:

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

varnishlog

Das Dienstprogramm varnishlog wird verwendet, um die Protokolle aller Benutzeranfragen anzuzeigen.

varnishlog

Sie sollten die folgende Ausgabe erhalten:

*   << 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

Der Befehl varnishstat liefert Ihnen Informationen über In-Memory-Statistiken, Speicher, erstellte Threads und gelöschte Objekte.

varnishstat

Sie sollten die folgende Anzeige sehen:

Lack-Statistiken

varnishtop

Der Befehl varnishtop liest die Shared-Memory-Protokolle von varnishd und zeigt eine ständig aktualisierte Liste der am häufigsten vorkommenden Protokolleinträge an.

varnishtop

Sie sollten den folgenden Bildschirm sehen:

Lacktop

varnishhist

Varnishhist parst die varnish-Protokolle und gibt die letzten n Anfragen nach ihrer Verarbeitung aus.

varnishhist

Sie sollten den folgenden Bildschirm sehen:

lackhist

Fazit

In der obigen Anleitung haben Sie gelernt, wie man den Varnish-Cache mit Apache- und Nginx-Webserver installiert und konfiguriert. Sie können nun Varnish-Cache in der Produktionsumgebung implementieren und die Leistung Ihrer Website beschleunigen. Wenn Sie Fragen haben, können Sie sich gerne an mich wenden.

Das könnte dich auch interessieren …