Wie funktioniert Varnish Cache + NGINX Reverse Proxy?

Veröffentlicht: 2022-08-09

In diesem Artikel besprechen wir den NGINX-Reverse-Proxy mit Varnish-Cache und wie Sie ihn einrichten können.

Ein Proxy-Server mit Schwerpunkt auf HTTP-Caching ist Varnish. Es ist als HTTP-Beschleuniger konzipiert und kann als Reverse-Proxy für Ihren Apache- oder NGINX-Webserver fungieren. Websites mit viel Verkehr und hoher Bekanntheit haben Varnish implementiert.

Inhaltsverzeichnis

Was ist Varnish Cache?

Für ein webbasiertes Unternehmen ist der Cache häufig die wichtigste Software. Varnish Cache ist eine leistungsstarke Open-Source-HTTP-Engine/Reverse-HTTP-Proxy, die genau das tut, was ihr Name sagt: eine Kopie einer Webseite zwischenspeichern (oder speichern), wenn ein Besucher sie zum ersten Mal aufruft. Dies kann eine Website um bis zu 1000 Prozent beschleunigen. Varnish stellt eine einzelne Anfrage an Ihren Server, um die Seite zwischenzuspeichern, und verarbeitet danach alle nachfolgenden Anfragen für dieselbe Seite. Dies führt zu einer unglaublich schnellen Bereitstellung von Inhalten und einer geringeren Nachfrage nach Backend-Serverressourcen.

  • Die Kernkompetenzen von Varnish sind Geschwindigkeit und Leistung.
  • Einsparungen bei der Serverinfrastruktur
  • Skalierbarkeit – Varnish ermöglicht es Ihrer Website, die Nachfrage unabhängig von der Anzahl der Besucher oder Anfragen zu erfüllen.
  • Schutz vor Ausfällen: Varnish stellt weiterhin zwischengespeicherte Informationen bereit, selbst wenn Ihr Server abstürzt.
  • Flexibilität: Die Varnish Configuration Language (VCL) ermöglicht die Erstellung spezialisierter Lösungen, Regeln und Module.
  • Verbesserte Benutzererfahrung

Wie funktioniert Varnish Cache?

Bevor sie das Backend Ihres Webservers erreichen, verarbeitet Varnish alle eingehenden Anfragen. Sein Cache verarbeitet den gesamten Webverkehr und wird standardmäßig alle zwei Minuten aktualisiert.

Varnish-Cache-Nginx-Reverse-Proxy

Varnish leitet die Anfrage an das Backend des Webservers weiter und cachet das Ergebnis, wie wir gerade im allgemeinen Reverse-Proxy-Absatz gesehen haben, wenn die Anfrage nicht zwischengespeichert wird.

Sobald die Anforderungen zwischengespeichert wurden, werden sie in den Speicher gestellt und können dann schnell abgerufen und an Kunden gesendet werden. Varnish verwendet die VCL-Sprache, um Einstellungen, Caching-Richtlinien und andere Regeln auszudrücken (Varnish Configuration Language).

Sie können mit dieser Sprache und ihren Variationen auf jede Anfrage anders antworten. Beispielsweise können Sie bestimmte Anfragen an ein bestimmtes Backend leiten oder Varnish anweisen, basierend auf den Merkmalen der eingehenden Anfrage oder ihren Ergebnissen eine andere Aktion durchzuführen.

Zwischengespeichertes Material kann auch dann bereitgestellt werden, wenn der Webserver nicht verfügbar ist, da eine eingebaute Funktion namens Backend-Polling eine weitere erstaunliche Varnish-Funktion ist. Varnish stellt weiterhin zwischengespeicherte Inhalte für einen Zeitraum bereit, der als Toleranzzeit bezeichnet wird, wenn eine Ausfallzeit festgestellt wird. Das Backend-Polling fragt den Server in einer von Ihnen flexibel einstellbaren Frequenz ab.

Was ist Nginx?

NGINX ist Open-Source-Software, die für Video-Streaming, Caching, Reverse-Proxys, Webserver und andere Funktionen verwendet werden kann. Es begann ursprünglich als Webserver, der auf höchste Geschwindigkeit und Zuverlässigkeit ausgelegt war. NGINX kann zusätzlich zur Funktion als HTTP-Server als HTTP-Server, E-Mail-Proxy-Server (IMAP, POP3 und SMTP), Reverse-Proxy und Load Balancer für HTTP-, TCP- und UDP-Server fungieren.

Was ist Reverse-Proxy?

Die Hauptfunktion eines Reverse-Proxys besteht darin, Webserver vor eingehendem Datenverkehr zu schützen. Jede Verbindungsanfrage wird von einem Reverse-Proxy empfangen, der sie über viele Server weiterleitet, bevor er sich mit demjenigen verbindet, der die Anfrage bearbeitet hat.

Jeder Reverse-Proxy-Vorgang besteht aus drei Hauptphasen:

  1. Sammlung von Verbindungsanfragen: Am Rand des Netzwerks akzeptiert der Reverse-Proxy eingehende Anfragen.
  2. TCP-Drei-Wege-Handshake: Nach einem TCP-Drei-Wege-Handshake wird eine Verbindung zum Reverse-Proxy hergestellt und die erste Verbindung geschlossen.
  3. Origin-Server-Verbindung: Der Reverse-Proxy verbindet den Origin-Server über eine fiktive IP-Adresse mit der Client-Anfrage.

Benutzer können sich niemals direkt mit einem Ursprungsserver verbinden, da alle Webbrowser-Verbindungen zu Web-Apps immer über einen Reverse-Proxy hergestellt werden.

Wie können Sie den Varnish-Cache-Nginx-Reverse-Proxy einrichten?

Installieren Sie Nginx auf Ihrem Server

Zunächst müssen wir Nginx aus dem Ubuntu-Repository mit dem Befehl apt installieren

 sudo apt update apt install nginx -y

Nachdem die Installation abgeschlossen ist, müssen wir Nginx starten und aktivieren, damit es jedes Mal beim Systemstart mit dem Befehl systemctl werden kann

 systemctl start nginx systemctl enable nginx

Konfigurieren Sie Nginx auf Port 88

Wir richten Nginx so ein, dass es den unkonventionellen HTTP-Port 8080 für den Betrieb verwendet. Dazu müssen wir die Dateien des virtuellen Hosts ändern, die sich im Verzeichnis „Sites-Available“ befinden.

 nano /etc/nginx/sites-available/default

Ändern Sie den Listenwert in 8080. Speichern und beenden.

Suchen Sie nach Fehlern, indem Sie die Nginx-Einstellungen jetzt testen. Starten Sie den Dienst danach neu.

 nginx -t systemctl restart nginx

Überprüfen Sie Nginx noch einmal mit netstat und bestätigen Sie, dass es auf dem unkonventionellen HTTP-Port 8080 arbeitet.

 netstat -plntu

Es wurde installiert und Port 8080 wird derzeit vom Nginx-Webserver verwendet.

Installieren Sie Varnish auf Ubuntu

Wir müssen Lack mit dem apt Befehl installieren

 sudo apt install varnish -y

Starten Sie mit den unten aufgeführten systemctl Befehlen den Lack und stellen Sie ihn so ein, dass er automatisch startet, wenn das System hochfährt.

 systemctl start varnish systemctl enable varnish

Standardmäßig verwendet Lack Port 6082 für die Admin-Weboberfläche und Port 6081 für den öffentlichen Zugriff. Stellen Sie sicher, dass bestimmte Ports aufgelistet sind, indem Sie den Befehl netstat zur Überprüfung verwenden.

 netstat -plntu

Varnish HTTP Accelerator wurde installiert

Konfigurieren Sie Varnish als Reverse-Proxy für Nginx

Als Reverse-Proxy für den Nginx-Webserver wird Varnish verwendet. Der Nginx-Webserver wird auf HTTP-Port 8080 betrieben, während Varnish auf HTTP-Port 80 ausgeführt wird.

In dieser Phase richten wir Varnish für Nginx ein, identifizieren den Backend-Server und ändern Varnish so, dass er HTTP-Port 80 als Standardport verwendet.

Bearbeiten Sie die Datei "default.vcl", indem Sie sofort in das Konfigurationsverzeichnis des Lacks gehen. und stellen Sie sicher, dass der Host 127.0.0.1 und der Port 8080 ist

 nano /etc/varnish/default.vcl

Die Konfiguration des Backends ist abgeschlossen.

Der nächste Schritt besteht darin, Varnish so einzurichten, dass es den HTTP-Port 80 verwendet. Bearbeiten Sie die Lackkonfigurationsdatei, indem Sie in das Verzeichnis „varnish“ im Verzeichnis „/etc/default“ wechseln.

 nano /etc/default/varnish

Stellen Sie sicher, dass Ihr Standardport 6081 und der HTTP-Port 80 ist

Die Lackdienstdatei im Verzeichnis ‚/lib/systemd/system‘ sollte nun bearbeitet werden. Bearbeiten Sie die Datei lack.service, indem Sie in das systemd-Systemverzeichnis wechseln.

 cd /lib/systemd/system nano varnish.service

Ersetzen Sie den HTTP-Port 80 durch den Lack-Port 6081 in der Zeile „ExecStart“.

Laden Sie nun die systemd Konfiguration neu und starten Sie den Lack neu

 systemctl daemon-reload systemctl restart varnish

Prüfen Sie den Lack mit dem Befehl netstat

 netstat -plntu

Die Lackkonfiguration als Reverse-Proxy für Nginx ist abgeschlossen

Konfigurieren Sie die UFW-Firewall

Die von Menschen lesbare Standard-Firewall auf dem Ubuntu-Betriebssystem heißt „UFW“. Verwenden Sie den unten gezeigten apt-Befehl, um sie zu installieren, wenn Sie das Paket noch nicht haben.

 sudo apt install ufw

Wir schalten die Firewall ein und öffnen neue SSH-, HTTP- und HTTPS-Ports.

die unten aufgeführten ufw-Befehle.

 ufw allow ssh ufw allow http ufw allow https

Schalten Sie nun die Firewall ein und stellen Sie sie so ein, dass sie immer beim Booten startet.

 ufw enable

Da die UFW-Firewall jetzt aktiv ist, sind sowohl der HTTP- als auch der HTTPS-Port vom externen Netzwerk aus erreichbar.