Installation und Einrichtung von Varnish Cache 6 mit Nginx unter CentOS 8

Varnish Cache ist ein kostenloser und quelloffener Reverse-Proxy-HTTP-Beschleuniger für Websites und APIs. Er kann als Reverse-Proxy vor jedem Webserver installiert werden, der auf HTTP läuft. Er sitzt zwischen dem Webserver und dem Browser und speichert Webseiten, Cookies und andere Daten im Speicher. Dieser Cache wird dazu verwendet, alle zukünftigen Anfragen für genau ähnliche Inhalte zu bedienen. Dadurch wird die Webanwendungslast erhöht und die Leistung des Webservers um das 300-fache gesteigert.

In diesem Tutorial werden wir den Nginx-Server als Backend-Server einrichten und ihn so konfigurieren, dass er auf Port 8080 lauscht, und dann den Varnish-Cache so konfigurieren, dass er auf dem Standard-HTTP-Port 80 lauscht.

Voraussetzungen

  • Ein Server, auf dem CentOS 8 läuft.
  • Der Server wird mit einem Root-Passwort konfiguriert.

Installieren und Konfigurieren von Nginx Web Server

Zuerst müssen Sie den Nginx-Webserver in Ihrem System installieren. Sie können ihn mit dem folgenden Befehl installieren:

dnf install nginx -y

Starten Sie nach der Installation den Nginx-Dienst und aktivieren Sie ihn beim Systemneustart mit folgendem Befehl:

systemctl start nginx
systemctl enable nginx

Standardmäßig lauscht die Nginx auf Port 80. Sie müssen Nginx also so konfigurieren, dass es auf Port 80 lauscht. Sie können es konfigurieren, indem Sie die Standardkonfigurationsdatei von Nginx bearbeiten:

nano /etc/nginx/nginx.conf

Suchen Sie die folgenden Zeilen:

        listen       80 default_server;
        listen       [::]:80 default_server;

Und, ersetzen Sie sie durch die folgenden Zeilen:

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

Sichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart nginx

Zu diesem Zeitpunkt ist der Nginx-Webserver installiert und lauscht auf Port 8080. Sie können ihn mit dem folgenden Befehl überprüfen:

netstat -tpln | grep 8080

Sie sollten die folgende Ausgabe erhalten:

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      30367/nginx: master 
tcp6       0      0 :::8080                 :::*                    LISTEN      30367/nginx: master 

Varnish Cache installieren

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

dnf module install varnish

Nach der Installation starten Sie den Varnish-Dienst mit dem folgenden Befehl:

systemctl start varnish

Sie können auch die installierte Version des Varnish-Caches mit dem folgenden Befehl überprüfen:

varnishd -V

Sie sollten die folgende Ausgabe sehen:

varnishd (varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2018 Varnish Software AS

Konfigurieren Sie Varnish für Nginx

Als nächstes müssen Sie Varnish so konfigurieren, dass es auf Port 80 läuft, um HTTP-Anfragen von Clients zu empfangen. Sie können ihn konfigurieren, indem Sie die Varnish-Standardkonfigurationsdatei bearbeiten:

systemctl edit --full varnish

Suchen Sie die folgende Zeile:

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

Und 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, wenn Sie fertig sind.

Als nächstes müssen Sie den Backend-Server für Varnish definieren. Sie können dies tun, indem Sie die Hauptkonfigurationsdatei von Varnish /etc/varnish/default.vcl bearbeiten:

nano /etc/varnish/default.vcl

Ändern Sie die folgenden Zeilen:

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

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Starten Sie anschließend den Varnish-Dienst neu und aktivieren Sie ihn beim Systemneustart mit dem folgenden Befehl:

systemctl restart varnish
systemcl enable varnish

Sie können auch den Status des Varnish-Cache mit folgendem Befehl überprüfen:

systemctl status varnish

Sie sollten die folgende Ausgabe erhalten:

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

Sie können nun den lauschenden Port von Nginx und Varnish mit dem folgenden Befehl überprüfen:

netstat -tpln | grep 80

Sie sollten die folgende Ausgabe sehen:

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 

Konfigurieren von SELinux und Firewall

Standardmäßig ist SELinux in CentOS 8 aktiviert. Sie müssen also SELinux für Varnish konfigurieren. Sie können es mit dem folgenden Befehl konfigurieren:

setsebool -P httpd_can_network_connect 1

Als nächstes müssen Sie Port 80 durch die Firewall zulassen. Sie können dies mit dem folgenden Befehl tun:

firewall-cmd --permanent --zone public --add-port 80/tcp
firewall-cmd --reload

Sobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Varnish-Cache testen

Zu diesem Zeitpunkt ist der Cache von Varnish installiert und mit dem Webserver von Nginx konfiguriert. Jetzt ist es an der Zeit zu testen, ob der Varnish-Cache funktioniert oder nicht.

Sie können es mit dem curl-Befehl wie unten gezeigt testen:

curl -I http://localhost

Sie sollten die folgende Ausgabe sehen:

																																																																																																																																																																																																																																																																																																																																																																		
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

Schlussfolgerung

Herzlichen Glückwunsch! Sie haben Varnish Cache mit Nginx auf CentOS 8 erfolgreich installiert. Ich hoffe, Sie können Varnish Cache auch mit Apache Webserver einfach konfigurieren. Zögern Sie nicht, mich zu fragen, wenn Sie Fragen haben.

Das könnte dich auch interessieren …