Wie man Varnish Cache 6 für Nginx unter CentOS/RHEL 8 installiert

Varnish Cache (oft als Varnish bezeichnet) ist ein Open-Source, leistungsstarker und schneller Reverse-Proxy HTTP-Beschleuniger mit moderner Architektur und flexibler Konfigurationssprache. Als Reverse-Proxy bedeutet einfach, dass es sich um Software handelt, die vor Ihrem Webserver (der Ursprungsserver oder Backend) wie Nginx bereitgestellt werden kann, um die HTTP-Anfragen der Clients zu empfangen und an den Ursprungsserver zur Verarbeitung weiterzuleiten. Und es liefert die Antwort vom Ursprungsserver an die Clients.

Varnish fungiert als Vermittler zwischen Nginx und Clients, jedoch mit einigen Leistungsvorteilen. Sein Hauptzweck besteht darin, Ihre Anwendungen schneller zu laden, indem es als Caching-Engine fungiert. Es empfängt Anfragen von Clients und leitet sie einmal an das Backend weiter, um den angeforderten Inhalt zu zwischenspeichern (Dateien und Fragmente von Dateien im Speicher zu speichern). Dann werden alle zukünftigen Anfragen für genau denselben Inhalt aus dem Cache bedient.

Dies macht Ihre Webanwendungen schneller und verbessert indirekt die Gesamtleistung Ihres Webservers, da Varnish Inhalte aus dem Speicher anstelle von Nginx, der Dateien von der Speicherfestplatte verarbeitet, bereitstellt.

Neben dem Zwischenspeichern hat Varnish auch mehrere andere Anwendungsfälle, darunter ein HTTP-Anforderungsrouter, Lastenausgleicher, Webanwendungs-Firewall und mehr.

Der lack wird mithilfe der hochgradig erweiterbaren integrierten Varnish Configuration Language (VCL) konfiguriert, die es Ihnen ermöglicht, Richtlinien dafür zu schreiben, wie eingehende Anfragen behandelt werden sollen. Sie können es verwenden, um maßgeschneiderte Lösungen, Regeln und Module zu erstellen.

In diesem Artikel werden wir die Schritte zur Installation des Nginx Webservers und des Varnish Cache 6 auf einem frischen CentOS 8 oder RHEL 8 Servers durchgehen. RHEL 8 Benutzer sollten sicherstellen, dass sie das Red Hat-Abonnement aktivieren.

Um anstelle der alleinigen Installation des Nginx Webservers einen vollständigen LEMP-Stack einzurichten, werfen Sie einen Blick auf die folgenden Anleitungen.

  1. So installieren Sie den LEMP-Server auf CentOS 8
  2. So installieren Sie den LEMP-Server auf RHEL 8

Schritt 1: Installieren Sie den Nginx-Webserver auf CentOS/RHEL 8

1. Das CentOS/RHEL 8 wird mit der neuesten Version der Nginx Webserver-Software ausgeliefert, daher werden wir sie aus dem Standard-Repository mithilfe der folgenden dnf-Befehle installieren.

# dnf update
# dnf install nginx

2. Sobald Nginx installiert ist, müssen Sie ihn mit den folgenden systemctl-Befehlen starten, aktivieren und den Status überprüfen.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
Verify Nginx Service Status

3. Wenn Sie ein wenig neugierig sind, können Sie auch den Nginx TCP-Socket überprüfen, der standardmäßig auf Port 80 läuft, mithilfe des folgenden ss-Befehls.

# ss -tpln
Check Nginx TCP Port

4. Wenn Sie die Firewall auf dem System ausführen, stellen Sie sicher, dass Sie die Firewall-Regeln aktualisieren, um Anfragen an den Webserver zuzulassen.

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

Schritt 2: Installation von Varnish Cache 6 auf CentOS/RHEL 8

5. Das CentOS/RHEL 8 bietet standardmäßig ein Varnish Cache DNF Modul an, das die Version 6.0 LTS (Langzeitunterstützung) enthält.

Um das Modul zu installieren, führen Sie den folgenden Befehl aus.

# dnf module install varnish
Install Varnish Cache in CentOS 8

6. Sobald die Modulinstallation abgeschlossen ist, können Sie die Version von Varnish auf Ihrem System bestätigen.

# varnishd -V
Check Varnish Version

7. Nach der Installation von Varnish Cache befindet sich der Hauptausführungsbefehl unter /usr/sbin/varnishd und die Varnish-Konfigurationsdateien befinden sich in /etc/varnish/.

Die Datei /etc/varnish/default.vcl ist die Haupt-Varnish-Konfigurationsdatei, die mit VCL geschrieben ist, und /etc/varnish/secret ist die Varnish-Geheimdatei.

8. Starten Sie als nächstes den Varnish-Dienst, aktivieren Sie ihn für das automatische Starten beim Systemstart und bestätigen Sie, dass er aktiv und einsatzbereit ist.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Verify Varnish Cache on CentOS 8

Schritt 3: Konfigurieren von Nginx für die Verwendung von Varnish Cache

9. In diesem Abschnitt zeigen wir, wie Varnish Cache vor Nginx konfiguriert wird. Standardmäßig hört Nginx auf Port 80, normalerweise ist jeder Serverblock (oder virtueller Host) so konfiguriert, dass er auf diesen Port hört.

Werfen Sie beispielsweise einen Blick auf den Standard-Nginx-Serverblock, der in der Hauptkonfigurationsdatei (/etc/nginx/nginx.conf) konfiguriert ist.

# vi /etc/nginx/nginx.conf

Suchen Sie nach dem Serverblock-Abschnitt, wie im folgenden Screenshot gezeigt.

Nginx Server Block Configuration

10. Um Varnish vor Nginx auszuführen, sollten Sie den Standard-Nginx-Port von 80 auf 8080 (oder einen anderen Port Ihrer Wahl) ändern.

Dies sollte in allen zukünftigen Serverblock-Konfigurationsdateien erfolgen (die normalerweise unter /etc/nginx/conf.d/ erstellt werden) für Websites oder Webanwendungen, die Sie über Varnish bereitstellen möchten.

Zum Beispiel ist der Serverblock für unsere Testseite tecmint.lan /etc/nginx/conf.d/tecmint.lan.conf und hat die folgende Konfiguration.

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 {
        }
}
Nginx Server Block Configuration

Wichtig: Denken Sie daran, den Standard-Serverblock zu deaktivieren, indem Sie den Konfigurationsabschnitt in der Datei /etc/nginx/nginx.conf auskommentieren, wie im folgenden Screenshot gezeigt. Dadurch können Sie andere Websites/Anwendungen auf Ihrem Server starten, da Nginx andernfalls immer Anfragen an den Standard-Serverblock weiterleitet.

Disable Nginx Server Block

11. Sobald die Konfiguration abgeschlossen ist, überprüfen Sie die Konfigurationsdatei auf Fehler und starten Sie den Nginx-Dienst neu, um die letzten Änderungen anzuwenden.

# nginx -t
# systemctl restart nginx
Check Nginx Configuration Syntax

12. Als nächstes müssen wir HTTP-Anfragen von Clients empfangen, dazu müssen wir Varnish so konfigurieren, dass er auf Port 80 läuft. Anders als bei früheren Versionen von Varnish Cache, wo diese Änderung in der Umgebungsdatei von Varnish vorgenommen wurde (was jetzt veraltet ist), in Version 6.0 und höher.

Wir müssen die erforderliche Änderung in der Varnish-Service-Datei vornehmen. Führen Sie den folgenden Befehl aus, um die entsprechende Service-Datei zum Bearbeiten zu öffnen.

# systemctl edit --full  varnish

Finden Sie die folgende Zeile und ändern Sie den Wert des -a Schalters, der die Empfangsadresse und den Port angibt. Setzen Sie den Port auf 80, wie im folgenden Screenshot gezeigt.

Beachten Sie, dass wenn Sie keine Adresse angeben, varnishd auf allen verfügbaren IPv4 und IPv6 Schnittstellen aktiv auf dem Server lauschen wird.

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

Speichern Sie die Änderungen in der Datei und beenden Sie.

13. Als nächstes müssen Sie den Backend-Server definieren, den Varnish besuchen wird, um Inhalte abzurufen. Dies wird in der Hauptkonfigurationsdatei von Varnish durchgeführt.

# vi /etc/varnish/default.vcl 

Suchen Sie nach dem Abschnitt zur Konfiguration des Standard-Backends und ändern Sie den String „default“ in server1 (oder einen beliebigen Namen Ihrer Wahl, um Ihren Ursprungsserver zu repräsentieren). Setzen Sie dann den Port auf 8080 (oder den Nginx-Listenport, den Sie in Ihrem Serverblock definiert haben).

backend server1 {
    .host = "127.0.0.1";
    .port = "8080";
}
Set Default Varnish Backend Servers

In diesem Leitfaden führen wir Varnish und Nginx auf demselben Server aus. Wenn Ihr Nginx-Webserver auf einem anderen Host läuft. Zum Beispiel auf einem anderen Server mit der Adresse 10.42.0.247, setzen Sie dann den .host Parameter wie gezeigt.

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

Speichern Sie die Datei und schließen Sie sie.

14. Als nächstes müssen Sie die Konfiguration des systemd-Managers neu laden, aufgrund der kürzlichen Änderungen in der Varnish-Service-Datei, dann starten Sie den Varnish-Dienst neu, um die Änderungen anzuwenden, wie folgt.

# systemctl daemon-reload
# systemctl restart varnish

15. Bestätigen Sie nun, dass Nginx und Varnish auf den konfigurierten TCP-Sockets lauschen.

# ss -tpln
Confirm Nginx and Varnish Ports

Schritt 4: Testen der Nginx Varnish Cache Einrichtung

16. Überprüfen Sie als Nächstes, ob die Webseiten über Varnish Cache bereitgestellt werden. Öffnen Sie einen Webbrowser und navigieren Sie mit der Server-IP oder FDQN wie im folgenden Screenshot gezeigt.

http://www.tecmin.lan
OR
http://10.42.0.144
Verify Nginx Pages Served Via Varnish Cache

17. Alternativ können Sie den curl Befehl verwenden. Verwenden Sie die IP-Adresse Ihres Servers oder die FQDN der Website oder verwenden Sie 127.0.0.1 oder localhost, wenn Sie lokal testen.

# curl -I http:///www.tecmint.lan
Verify Nginx Varnish Cache Page Using Curl

Nützliche Varnish Cache Verwaltungsprogramme

18. In diesem abschließenden Abschnitt werden wir kurz einige der nützlichen Hilfsprogramme beschreiben, die mit Varnish Cache ausgeliefert werden und die Sie zur Steuerung von varnishd, zum Zugriff auf In-Memory-Logs und Gesamtstatistiken und mehr verwenden können.

varnishadm

varnishadm ein Dienstprogramm zur Steuerung einer laufenden Varnish-Instanz. Es stellt eine CLI-Verbindung zu varnishd her. Sie können es beispielsweise verwenden, um konfigurierte Backends aufzulisten, wie im folgenden Screenshot gezeigt (lesen Sie man varnishadm für weitere Informationen).

# varnishadm
varnish> backend.list
List Configured Backends

varnishlog

Das Dienstprogramm varnishlog bietet Zugriff auf anfragespezifische Daten. Es bietet Informationen über spezifische Clients und Anfragen (lesen Sie man varnishlog für weitere Informationen).

# varnishlog
Check Info About Clients and Requests

varnishstat

A varnishstat also known as varnish statistics, which gives you a glance at Varnish’s current performance by providing access to in-memory statistics such as cache hits and misses, information about the storage, threads created, deleted objects (read man varnishstat for more information).

# varnishstat 
Show Varnish Statistics

varnishtop

A varnishtop utility reads the shared memory logs and presents a continuously updated list of the most commonly occurring log entries (read man varnishtop for more information).

# varnishtop 
View Shared Memory logs

varnishhist

A varnishhist (varnish history) utility parses the varnish logs and outputs a continuously updated histogram showing the distribution of the last n requests by their processing (read man varnishhist for more information).

# varnishhist
Show Requests Histogram

Das war alles! In dieser Anleitung haben wir gezeigt, wie man Varnish Cache installiert und vor dem Nginx HTTP Server ausführt, um die Webinhaltsbereitstellung in CentOS/RHEL 8 zu beschleunigen.

Alle Gedanken oder Fragen zu dieser Anleitung können über das untenstehende Feedback-Formular geteilt werden. Für weitere Informationen lesen Sie die Varnish Cache-Dokumentation.

Der Hauptnachteil von Varnish Cache ist das Fehlen nativer Unterstützung für HTTPS. Um HTTPS auf Ihrer Website/Ihrem Webanwendung zu aktivieren, müssen Sie einen SSL/TLS-Terminierungsproxy konfigurieren, der in Verbindung mit Varnish Cache arbeitet, um Ihre Website zu schützen. In unserem nächsten Artikel werden wir zeigen, wie man HTTPS für Varnish Cache mit Hitch aktiviert auf CentOS/RHEL 8.

Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-rhel-8/