Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Wie richte ich OpenLiteSpeed ​​​​für den Reverse-Proxy zu Nextcloud im internen Netzwerk ein?

Überraschenderweise ergibt eine Suche auf Habré nach OpenLiteSpeed ​​​​nichts! Ich beeile mich, diese Ungerechtigkeit zu korrigieren, denn LSWS ist ein anständiger Webserver. Ich liebe es wegen seiner Geschwindigkeit und der schicken Webadministrationsoberfläche:

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Obwohl OpenLiteSpeed ​​vor allem als WordPress-„Beschleuniger“ bekannt ist, werde ich im heutigen Artikel eine eher spezifische Verwendung davon zeigen. Nämlich Reverse Proxying von Anfragen (Reverse Proxy). Sie sagen, dass es dafür üblicher ist, Nginx zu verwenden? Ich werde zustimmen. Aber es tut so weh, dass wir uns in LSWS verliebt haben!

Proxying ist in Ordnung, aber wo? In nicht weniger wunderbarem Service - Nextcloud. Wir nutzen Nextcloud, um private „File-Sharing-Clouds“ zu erstellen. Für jeden Client weisen wir bei Nextcloud eine separate VM zu und möchten diese nicht „außen“ offenlegen. Stattdessen leiten wir Anfragen über einen gemeinsamen Reverse-Proxy weiter. Diese Lösung ermöglicht:
1) Entfernen Sie den Server, auf dem die Kundendaten gespeichert sind, aus dem Internet und
2) IP-Adressen speichern.

Das Diagramm sieht so aus:

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Es ist klar, dass das Schema vereinfacht ist, weil Die Organisation der Web-Services-Infrastruktur ist nicht das Thema des heutigen Artikels.

Auch in diesem Artikel werde ich auf die Installation und Grundkonfiguration der nextcloud verzichten, zumal es auf Habré Materialien zu diesem Thema gibt. Ich werde aber auf jeden Fall die Einstellungen zeigen, ohne die Nextcloud hinter einem Proxy nicht funktioniert.

Mai:
Nextcloud ist auf Host 1 installiert und für die Arbeit über http (ohne SSL) konfiguriert, hat nur eine lokale Netzwerkschnittstelle und eine „graue“ IP-Adresse 172.16.22.110.
Konfigurieren wir OpenLiteSpeed ​​​​auf Host 2. Es verfügt über zwei Schnittstellen, extern (schaut auf das Internet) und intern mit einer IP-Adresse im Netzwerk 172.16.22.0/24
Die IP-Adresse der externen Schnittstelle von Host 2 ist der DNS-Name cloud.connect.link

Problem:
Aus dem Internet gelangen Sie über den Link 'https://cloud.connect.link' (SSL) an Nextcloud im internen Netzwerk.

  • OpenLiteSpeed ​​​​unter Ubuntu 18.04.2 installieren.

Fügen wir ein Repository hinzu:

wget -O http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh |sudo bash
sudo apt-get update

installieren, ausführen:

sudo apt-get install openlitespeed
sudo /usr/local/lsws/bin/lswsctrl starten

  • Minimale Firewall-Einrichtung.

    sudo ufw erlauben ssh
    sudo ufw default erlaubt ausgehende Nachrichten
    sudo ufw default verweigert eingehende Nachrichten
    sudo ufw erlauben http
    sudo ufwallowhttps
    sudo ufw erlauben von Ihr Management-Gastgeber an einen beliebigen Port 7080
    sudo ufw aktivieren

  • Richten Sie OpenLiteSpeed ​​als Reverse-Proxy ein.
    Lassen Sie uns Verzeichnisse unter dem virtuellen Host erstellen.

    cd /usr/local/lsws/
    sudo mkdirc cloud.connect.link
    cd cloud.connect.link/
    sudo mkdir {conf,html,logs}
    sudo chown lsadm:lsadm ./conf/

Lassen Sie uns den virtuellen Host über die LSWS-Weboberfläche konfigurieren.
Öffnen Sie die URL-Verwaltung http://cloud.connect.link:7080
Standard-Login/Passwort: admin/123456

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Fügen Sie einen virtuellen Host hinzu (Virtuelle Hosts > Hinzufügen).
Beim Hinzufügen erscheint eine Fehlermeldung – die Konfigurationsdatei fehlt. Dies ist normal und kann durch Klicken auf „Zum Erstellen klicken“ gelöst werden.

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Geben Sie auf der Registerkarte „Allgemein“ das Dokumentstammverzeichnis an (obwohl es nicht erforderlich ist, funktioniert die Konfiguration ohne dieses Dokument nicht). Der Domänenname wird, falls nicht angegeben, vom virtuellen Hostnamen übernommen, den wir unseren Domänennamen genannt haben.

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Jetzt ist es an der Zeit, sich daran zu erinnern, dass wir nicht nur einen Webserver, sondern einen Reverse-Proxy haben. Die folgenden Einstellungen teilen LSWS mit, was und wo ein Proxy erfolgen soll. Öffnen Sie in den Virtualhost-Einstellungen die Registerkarte „Externe App“ und fügen Sie eine neue Anwendung vom Typ „Webserver“ hinzu:

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Geben Sie den Namen und die Adresse an. Sie können einen beliebigen Namen angeben, diesen müssen Sie sich aber merken, er wird sich in den nächsten Schritten als nützlich erweisen. Die Adresse ist die Adresse, an der sich Nextcloud im internen Netzwerk befindet:

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Öffnen Sie in denselben Einstellungen des virtuellen Hosts die Registerkarte „Kontext“ und erstellen Sie einen neuen Kontext vom Typ „Proxy“:

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Geben Sie die Parameter an: URI = /, Webserver = nextcloud_1 (Name aus dem vorherigen Schritt)

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Starten Sie LSWS neu. Dies geschieht mit einem Klick über die Weboberfläche, Wunder! (in mir spricht ein erblicher Mäuseträger)

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten
Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

  • Wir legen das Zertifikat ab, konfigurieren https.
    Das Verfahren zur Erlangung eines Zertifikats Wir lassen es weg, stimmen zu, dass wir es bereits haben und liegen mit dem Schlüssel im Verzeichnis /etc/letsencrypt/live/cloud.connect.link.

Erstellen wir einen „Listener“ (Listener > Hinzufügen), nennen wir ihn „https“. Richten Sie es auf Port 443 und beachten Sie, dass es sicher ist:

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Geben Sie auf der Registerkarte SSL den Pfad zum Schlüssel und Zertifikat an:

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Der „Listener“ wurde erstellt. Jetzt fügen wir im Abschnitt „Virtual Host Mappings“ unseren virtuellen Host hinzu:

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Wenn LSWS nur einen Proxy für einen Dienst übernimmt, kann die Konfiguration abgeschlossen werden. Wir planen jedoch, damit je nach Domainname Anfragen an verschiedene „Instanzen“ zu senden. Und alle Domänen verfügen über eigene Zertifikate. Daher müssen Sie zur Virtualhost-Konfiguration gehen und deren Schlüssel und Zertifikat erneut auf der Registerkarte SSL angeben. Zukünftig sollte dies für jeden neuen virtuellen Host durchgeführt werden.

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Es bleibt noch, das URL-Umschreiben so zu konfigurieren, dass HTTP-Anfragen an https adressiert werden.
(Übrigens, wann endet das? Es ist an der Zeit, dass Browser und andere Software standardmäßig auf https umsteigen und bei Bedarf manuell auf No-SSL umleiten.)
Aktivieren Sie Rewrite aktivieren und schreiben Sie Rewrite-Regeln:

RewriteCond% {SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Aufgrund eines seltsamen Missverständnisses ist es unmöglich, Rewrite-Regeln mit dem üblichen Graceful-Neustart anzuwenden. Deshalb werden wir LSWS nicht elegant, sondern grob und effizient neu starten:

sudo systemctl lsws.service neu starten

Damit der Server Port 80 überwacht, erstellen wir einen weiteren Listener. Nennen wir es http, geben Sie den 80. Port an und geben Sie an, dass er nicht sicher sein soll:

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Analog zur https-Listener-Einstellung hängen wir unseren virtuellen Host daran an.

Jetzt überwacht LSWS Port 80 und sendet von dort aus Anfragen an 443, wobei die URL neu geschrieben wird.
Abschließend empfehle ich, die LSWS-Protokollierungsstufe zu senken, die standardmäßig auf Debug eingestellt ist. In diesem Modus vermehren sich die Protokolle blitzschnell! In den meisten Fällen ist die Warnstufe ausreichend. Gehen Sie zu Serverkonfiguration > Protokoll:

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Damit ist die Konfiguration von OpenLiteSpeed ​​​​als Reverse-Proxy abgeschlossen. Starten Sie LSWS noch einmal neu und folgen Sie dem Link https://cloud.connect.link und sehen:

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Damit Nextcloud uns Zutritt gewährt, müssen wir die Domäne cloud.connect.link zur vertrauenswürdigen Liste hinzufügen. Lass uns config.php bearbeiten. Ich habe Nextcloud bei der Installation von Ubuntu automatisch installiert und die Konfiguration befindet sich hier: /var/snap/nextcloud/current/nextcloud/config.
Fügen Sie den Parameter „cloud.connect.link“ zum Schlüssel „trusted_domains“ hinzu:

'trusted_domains' =>
Array (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Darüber hinaus müssen Sie in derselben Konfiguration die IP-Adresse unseres Proxys angeben. Ich mache Sie darauf aufmerksam, dass als Adresse diejenige angegeben werden muss, die für den Nextcloud-Server sichtbar ist, d.h. Die IP der lokalen LSWS-Schnittstelle. Ohne diesen Schritt funktioniert die Nextcloud-Weboberfläche, Anwendungen werden jedoch nicht autorisiert.

'trusted_proxies' =>
Array (
0 => '172.16.22.100',
),

Großartig, danach können wir in die Autorisierungsschnittstelle gelangen:

Nextcloud innerhalb und außerhalb von OpenLiteSpeed: Reverse-Proxying einrichten

Problem gelöst! Jetzt kann jeder Kunde die „Datei-Cloud“ sicher unter seiner persönlichen URL nutzen, der Server mit Dateien ist vom Internet getrennt, zukünftige Kunden erhalten alles gleich und keine einzige zusätzliche IP-Adresse wird beeinträchtigt.
Darüber hinaus können Sie einen Reverse-Proxy verwenden, um statische Inhalte bereitzustellen. Im Fall von Nextcloud führt dies jedoch nicht zu einer spürbaren Geschwindigkeitssteigerung. Es ist also optional und optional.

Ich freue mich, diese Geschichte zu teilen und hoffe, dass sie jemandem nützlich sein wird. Wenn Sie elegantere und effizientere Methoden zur Lösung des Problems kennen, bin ich für Kommentare dankbar!

Source: habr.com

Kommentar hinzufügen