GNU/Linux >> LINUX-Kenntnisse >  >> Rocky Linux

So richten Sie die Varnish-SSL-Terminierung mit dem Nginx-Webserver unter Rocky Linux 8 ein

Die Varnish-Cache-Software unterstützt standardmäßig kein SSL/TLS. Sie benötigen zusätzliche Software, um die SSL/TLS-Unterstützung auf Varnish zu aktivieren.

SSL-Beendigung ist eine Methode, um SSL/TLS auf Varnish zu aktivieren. Sie können Hitch, Nginx oder Apache verwenden um die SSL-Terminierung für den Varnish-HTTP-Beschleuniger zu aktivieren.

Die SSL-Beendigungssoftware wird auf HTTPS ausgeführt Port '443 ' und behandelt alle HTTPS-Anfragen von Clients. Danach werden alle Anfragen an die Lack-Cache-Software und dann an den Ursprungs-Backend-Server weitergeleitet.

Voraussetzungen

In diesem Artikel erfahren Sie, wie Sie die Varnish-SSL-Terminierung mit dem Nginx-Webserver einrichten.

Bevor Sie beginnen, vergewissern Sie sich, dass die folgenden Anforderungen erfüllt sind:

  • Ein Linux-Server, auf dem Varnish installiert ist.
  • Root-Rechte
  • Ein Domainname

Für dieses Beispiel verwenden wir den Rocky Linux-Server, auf dem Varnish installiert ist. Und wir werden den Domainnamen „example.io“ verwenden '.

Fangen wir jetzt an.

Nginx-Webserver installieren

Wenn Sie Nginx als Varnish-Backend verwenden, überspringen Sie diesen ersten Schritt.

In diesem ersten Schritt installieren Sie Nginx auf dem Linux-System.

1. Führen Sie für eine Debian/Ubuntu-basierte Distribution den folgenden apt-Befehl aus, um den Nginx-Webserver zu installieren.

sudo apt install nginx -y

2. Führen Sie für das Betriebssystem CentOS/RockyLinux/AlmaLinux den folgenden DNF-Befehl aus, um den Nginx-Webserver zu installieren.

sudo dnf install nginx -y

3. Nachdem die Nginx-Installation abgeschlossen ist, starten und aktivieren Sie den Nginx-Webserver mit dem folgenden Befehl.

sudo systemctl enable --now nginx

Wenn Sie einen Fehler haben, lassen Sie ihn. Im nächsten Schritt konfigurieren Sie Nginx.

SSL mit Certbot generieren

In diesem Schritt installieren Sie das Cerbot-Tool und generieren SSL-Zertifikate von Letsencrypt für die Domain „example.io '.

1. Fügen Sie zuerst die HTTP- und HTTPS-Ports zur Systemfirewall hinzu.

Führen Sie für Debian/Ubuntu-Systeme den folgenden ufw-Befehl aus, um HTTP- und HTTPS-Ports zu öffnen.

sudo ufw allow http
sudo ufw allow https
sudo ufw reload

Führen Sie für CentOS/RockyLinux/AlmaLinux-Systeme den folgenden Befehl firewall-cmd aus.

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload

2. Installieren Sie als Nächstes das certbot-Tool mit dem folgenden Befehl.

Installieren Sie das certbot-Tool auf Debian/Ubuntu-Systemen mit dem folgenden apt-Befehl.

sudo apt install certbot -y

Installieren Sie das certbot-Tool auf den CentOS/RockyLinux/AlmaLinux-Systemen mit dem folgenden DNF-Befehl.

sudo dnf install certbot -y

3. Bevor Sie SSL Letsencrypt generieren, stoppen Sie den Varnish-Dienst, der auf dem Standard-HTTP-Port ausgeführt wird.

sudo systemctl stop varnish
sudo systemctl stop nginx

4. Führen Sie nun den folgenden certbot-Befehl aus, um SSL Letsencrypt zu generieren. Und vergessen Sie nicht, den Domainnamen und die E-Mail-Adresse zu ändern.

sudo certbot certonly --agree-tos --email [email protected] --standalone --preferred-challenges http -d example.io

Nach Abschluss des Certbot-Prozesses ist Ihr Zertifikat im Verzeichnis „/etc/letsencrypt/live/DOMAIN.COM/ verfügbar '.

Das Zertifikat 'fullchain.pem ' ist Ihr öffentlicher SSL-Schlüssel und die 'privkey.pem ' ist Ihr privater SSL-Schlüssel.

Standard-Nginx-Port einrichten

Überspringen Sie diesen Schritt, wenn Sie den Nginx-Webserver als Backend für Ihren Varnish-HTTP-Beschleuniger verwenden.

Wenn Sie einen anderen Back-End-Webserver verwenden, müssen Sie den Standardport für Nginx konfigurieren.

1. Bearbeiten Sie die Standard-nginx-Konfiguration mit dem Nano-Editor.

sudo nano /etc/nginx/nginx.conf

Auf dem Standard-'server { ... } ' Abschnitt, ändern Sie die Option 'zuhören ' an Port '8081 ' wie unten.

....

    server {
        listen       8081 default_server;
        listen       [::]:8081 default_server;

        ...trim...
    }

....

Speichern Sie die Konfiguration und beenden Sie.

2. Starten Sie nun den Nginx-Dienst neu, um eine neue Konfiguration anzuwenden.

sudo systemctl restart nginx

Der standardmäßige Nginx-Dienst wird jetzt auf Port „8081 ausgeführt '.

SSL-Terminierung mit Nginx-Webserver einrichten

Um die SSL-Terminierung mit Nginx einzurichten, müssen Sie eine neue Konfiguration für virtuelle Host-/Serverblöcke erstellen, die auf dem HTTPS-Port „443“ ausgeführt wird.

Dieser virtuelle Host verarbeitet alle HTTPS-Anfragen von Clients und leitet alle Anfragen an den Varnish-HTTP-Beschleuniger weiter.

1. Erstellen Sie mit dem folgenden Befehl eine neue Nginx-Serverblockkonfiguration.

Wenn Sie das Debian/Ubuntu-basierte System verwenden, erstellen Sie eine neue Konfiguration „/etc/nginx/sites-available/example.io '.

sudo nano /etc/nginx/sites-available/example.io

Erstellen Sie für das CentOS/RockyLinux/AlmaLinux-System eine neue Konfiguration '/etc/nginx/conf.d/example.conf' .

sudo nano /etc/nginx/conf.d/example.conf

Kopieren Sie die folgende Konfiguration und fügen Sie sie ein. Und stellen Sie sicher, dass Sie den Domänennamen und den Pfad der SSL-Zertifikate ändern.

server {

    listen 443 ssl http2;
    server_name example.io;
    ssl_certificate           /etc/letsencrypt/live/exmaple.io/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/example.io/privkey.pem;

    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/example.io_access.log;
    error_log             /var/log/nginx/example.io_error.log;

        location / {
            proxy_pass http://127.0.0.1:80;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-Port 443;
            proxy_set_header Host $host;
        }

  }

Speichern Sie die Konfiguration und beenden Sie.

2. Aktivieren Sie als Nächstes für das Debian/Ubuntu-System die Serverblockkonfiguration mit dem folgenden Befehl.

sudo ln -s /etc/nginx/sites-available/example.io /etc/nginx/sites-enabled/

3. Führen Sie nun den folgenden Befehl aus, um die Nginx-Konfiguration zu überprüfen, und starten Sie dann den Nginx-Dienst neu, um die neue Konfiguration zu übernehmen.

sudo nginx -t
sudo systemctl restart nginx

4. Überprüfen Sie nun den Nginx-Dienst und HTTPS Port '443 ' mit dem folgenden Befehl.

Überprüfen Sie den Status des Nginx-Dienstes mit dem folgenden systemctl-Befehl.

sudo systemctl status nginx

Stellen Sie sicher, dass der Nginx-Dienst aktiv ist und ausgeführt wird.

Überprüfen Sie den HTTPS-Port '443 ' auf Ihrem System mit ss Befehl unten.

ss -antpl | grep 443

Stellen Sie sicher, dass der HTTPS-Port '443 ' auf den Zustand 'LISTEN '.

LISTEN 0      128          0.0.0.0:443        0.0.0.0:*    users:(("nginx",pid=4787,fd=8),("nginx",pid=4786,fd=8),("nginx",pid=4785,fd=8))

Jetzt haben Sie die grundlegende Konfiguration der SSL-Terminierung mit dem Nginx-Webserver abgeschlossen.

Automatisches HTTP zu HTTPS mit Varnish

In diesem Schritt richten Sie Varnish so ein, dass HTTP automatisch auf das HTTPS-Protokoll umgeleitet wird. Dies kann erreicht werden, indem eine neue Varnish-Regel für die Konfiguration 'default.vcl' erstellt wird .

1. Bearbeiten Sie die Lackkonfiguration '/etc/varnish/default.vcl' Verwenden des Nano-Editors.

nano /etc/varnish/default.vcl

Kopieren Sie die folgende Konfiguration und fügen Sie sie in die Option „sub vcl_recv { ... }“ ein '. Und stellen Sie sicher, dass Sie den Domainnamen mit Ihrer Domain ändern.

sub vcl_recv {

    ...trim...

    if (client.ip != "127.0.0.1" && req.http.host ~ "example.io") {
       set req.http.x-redir = "https://example.io" + req.url;
       return(synth(850, ""));
    }

    ...trim...
{

Fügen Sie als Nächstes die folgende Konfiguration am Ende der Zeile hinzu. Dadurch wird die Umleitungsmethode zu HTTP '301' bestimmt.

sub vcl_synth {
    if (resp.status == 850) {
       set resp.http.Location = req.http.x-redir;
       set resp.status = 301;
       return (deliver);
    }
}

Speichern Sie die Lackkonfiguration und beenden Sie.

2. Starten Sie als Nächstes den Varnish-Dienst neu, um eine neue Konfiguration mit dem folgenden Befehl anzuwenden.

sudo systemctl restart varnish

Und Sie haben die automatische HTTP- und HTTPS-Umleitung mithilfe der Varnish-Regel abgeschlossen.

SSL-Terminierung von Varnish überprüfen

Um die SSL-Terminierung von Varnish zu testen, können Sie den Webbrowser oder den curl-Befehl verwenden.

1. Öffnen Sie Ihren Webbrowser und geben Sie Ihren Domainnamen in die Adressleiste ein. Für dieses Beispiel verwenden wir den Firefox-Webbrowser.

http://example.io

Sie werden automatisch zum HTTPS-Protokoll weitergeleitet.

Klicken Sie mit der rechten Maustaste auf die Webseite und klicken Sie auf das Menü „Inspizieren“ '.

Wechseln Sie zum Tab 'Netzwerk ' und klicken Sie auf 'Neu laden ' Schaltfläche.

Klicken Sie auf die Root-URL-Anforderung und Sie sehen eine ähnliche Ausgabe wie unten.

Die Anfrage an http://example.io wird automatisch auf das HTTPS-Protokoll https://example.io umgeleitet mit dem Statuscode '301 '.

Der Varnish-Server verarbeitet alle Client-Anfragen.

2. Verwenden Sie den folgenden Befehl, um die Lack-SSL-Terminierung mit curl zu überprüfen.

curl -I http://example.io

Sie werden einen detaillierten HTTP-Header wie unten sehen.

Die Anfrage wird an das HTTPS-Protokoll „https://example.io“ mit dem HTTP-Statuscode „301 umgeleitet '. Der Lackserver verarbeitet alle Anfragen von Clients.

Schlussfolgerung

Glückwunsch! Sie haben die Konfiguration von Varnish SSL Termination mit dem Nginx-Webserver gelernt.

Außerdem haben Sie den grundlegenden certbot-Befehl zum Generieren von kostenlosem SSL Letsencrypt und die grundlegende Lackregel zum automatischen Umleiten von HTTP zu HTTPS gelernt.


Rocky Linux
  1. So installieren Sie den Nginx-Webserver unter Ubuntu 18.04

  2. So richten Sie hochverfügbares NGINX mit KeepAlived unter Linux ein

  3. So installieren Sie Varnish 7 für Nginx unter Rocky Linux 8

  4. So installieren Sie den Nginx-Webserver unter Linux

  5. So installieren Sie einen FTP-Server unter Rocky Linux 8 mit VSFTPD

So installieren Sie den Nginx-Webserver unter Alpine Linux

So installieren Sie den Lighttpd-Webserver unter Rocky Linux 8

So installieren Sie den OpenLiteSpeed-Webserver auf AlmaLinux 8 / Rocky Linux 8

So installieren Sie den NextCloud-Server auf Rocky Linux 8

So installieren Sie LAMP auf Rocky Linux 8 Server

So installieren Sie Nginx unter Rocky Linux 9