Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Wie konfiguriert man OpenLiteSpeed für das Reverse Proxy in Nextcloud, das sich im internen Netzwerk befindet?

Erstaunlich, aber die Suche auf Habr mit dem Begriff OpenLiteSpeed ergibt nichts! Ich eile, diese Ungerechtigkeit zu beheben, denn LSWS ist ein wertvoller Webserver. Ich liebe ihn für seine Geschwindigkeit und das moderne Web-Admin-Interface:

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Obwohl OpenLiteSpeed am bekanntesten als „Beschleuniger“ für WordPress ist, werde ich in diesem Artikel eine ziemlich spezifische Anwendung vorstellen. Nämlich das Reverse Proxy von Anfragen. Sie werden sagen, dass man dafür gewohnt ist, nginx zu verwenden? Das würde ich akzeptieren. Aber wir sind so sehr mit LSWS zufrieden!

Proxying ist in Ordnung, aber wohin? Zu einem nicht minder großartigen Dienst – Nextcloud. Wir nutzen Nextcloud, um private „Clouds für den Dateiaustausch“ zu erstellen. Für jeden Kunden stellen wir eine eigene VM mit Nextcloud zur Verfügung und wollen diese nicht „nach außen“ hin exponieren. Stattdessen leiten wir Anfragen über einen gemeinsamen Reverse Proxy weiter. Diese Lösung ermöglicht:
1) den Server, auf dem die Kundendaten gespeichert sind, aus dem Internet zu entfernen und
2) IP-Adressen zu sparen.

Das Schema sieht folgendermaßen aus:

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Es ist klar, dass das Schema vereinfacht ist, da die Organisation der Infrastruktur von Webdiensten nicht Thema dieses Artikels ist.

In diesem Artikel werde ich die Installation und die grundlegende Konfiguration von Nextcloud weglassen, zumal es auf Habr hierzu bereits Materialien gibt. Aber ich werde auf jeden Fall die Einstellungen zeigen, ohne die Nextcloud hinter einem Proxy nicht funktionieren wird.

Gegeben:
Nextcloud ist auf Host 1 installiert und für den Betrieb über http (ohne SSL) konfiguriert, hat nur ein lokales Netzwerkinterface und die „graue“ IP-Adresse 172.16.22.110.
Lass uns OpenLiteSpeed auf Host 2 konfigurieren. Dieser hat zwei Schnittstellen, eine externe (die ins Internet schaut) und eine interne mit der IP-Adresse im Netzwerk 172.16.22.0/24
Die IP-Adresse der externen Schnittstelle von Host 2 hat den DNS-Namen cloud.connect.link

Die Aufgabe ist:
Von außen über den Link ‘https://cloud.connect.link‘ (SSL) zu Nextcloud im internen Netzwerk zu gelangen.

  • Wir installieren OpenLiteSpeed auf Ubuntu 18.04.2.

Fügen wir das Repository hinzu:

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

installieren, starten:

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

  • Lass uns die Firewall minimal konfigurieren.

    sudo ufw allow ssh
    sudo ufw default allow outgoing
    sudo ufw default deny incoming
    sudo ufw allow http
    sudo ufw allow https
    sudo ufw allow from deinem Verwaltungs-Host to any port 7080
    sudo ufw enable

  • Konfigurieren wir OpenLiteSpeed als Reverse Proxy.
    Erstellen wir Verzeichnisse für den virtuellen Host.

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

Wir konfigurieren den virtuellen Host über die Weboberfläche von LSWS.
Management-URL öffnen http://cloud.connect.link:7080
Standardbenutzername/Passwort: admin/123456

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Fügen Sie den virtuellen Host hinzu (Virtual Hosts > Hinzufügen).
Beim Hinzufügen erscheint eine Fehlernachricht über die fehlende Konfigurationsdatei. Das ist normal, es kann behoben werden, indem Sie auf Click to create klicken.

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Im Tab Allgemein geben wir die Document Root an (auch wenn wir sie nicht benötigen, ohne sie funktioniert die Konfiguration nicht). Der Domainname wird von dem Virtual Host Name übernommen, den wir mit dem Namen unserer Domain benannt haben.

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Jetzt ist es an der Zeit, daran zu erinnern, dass wir nicht nur einen Webserver haben, sondern einen Reverse-Proxy. Die folgenden Einstellungen zeigen LSWS, was und wohin zu proxen ist. In den Einstellungen des virtuellen Hosts öffnen wir den Tab Externe App und fügen eine neue Anwendung vom Typ Webserver hinzu:

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Geben Sie einen Namen und eine Adresse an. Der Name kann beliebig sein, aber Sie sollten ihn sich merken, er wird in den nächsten Schritten nützlich sein. Die Adresse ist die, unter der Nextcloud im internen Netzwerk zu finden ist:

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

In denselben Einstellungen des virtuellen Hosts öffnen wir den Tab Kontext und erstellen einen neuen Kontext vom Typ Proxy:

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

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

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Starten Sie LSWS neu. Dies geschieht mit einem Klick über die Weboberfläche, Wunder wirken! (Die Stimme in mir ist die eines Erben der Maus-Spezialisten)

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys
Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Im Tab SSL geben wir den Pfad zum Schlüssel und Zertifikat an:

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Der 'Listener' ist erstellt, nun fügen wir in der Sektion Virtuelle Host-Zuordnungen unseren virtuellen Host hinzu:

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Wenn LSWS nur zu einem Dienst proxen wird, können die Einstellungen abgeschlossen werden. Aber wir planen, es für die Übermittlung von Anfragen an verschiedene 'Instanzen' je nach Domainnamen zu verwenden. Und jeder Domain wird ihr eigenes Zertifikat haben. Daher müssen wir die Konfiguration des virtuellen Hosts erneut aufrufen und im Tab SSL erneut seinen Schlüssel und sein Zertifikat angeben. In Zukunft muss dies für jeden neuen virtuellen Host erfolgen.

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Jetzt müssen wir die URL-Neuschreibung konfigurieren, damit HTTP-Anfragen an HTTPS gerichtet werden.

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

(Übrigens, wann wird das endlich enden? Es ist an der Zeit, dass Browser und andere Software standardmäßig auf HTTPS zugreifen und das Umleiten auf no-SSL manuell bei Bedarf erfolgt).
Aktivieren Sie Enable Rewrite und geben Sie die Rewrite-Regeln ein:
RewriteCond %{SERVER_PORT} 80

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

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Rewrite-Regeln können aus einem seltsamen Missverständnis heraus nicht auf vertraute Art und Weise mit einem eleganten Neustart angewendet werden. Daher starten wir LSWS nicht elegant, sondern grob und effizient neu:

sudo systemctl restart lsws.service

Damit der Server auch den Port 80 abhören kann, erstellen wir einen weiteren Listener. Nennen wir ihn http, geben wir den Port 80 an und die Tatsache, dass er nicht sicher sein wird:

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Analog zur Konfiguration des HTTPS-Listeners binden wir unseren virtuellen Host daran.

Jetzt wird LSWS den Port 80 abhören und Anfragen von dort auf 443 umleiten, während die URL umgeschrieben wird.
Ich empfehle, das Logging-Level von LSWS zu senken, das standardmäßig auf Debug eingestellt ist. In diesem Modus vermehren sich die Logs blitzschnell! Für die meisten Fälle reicht das Level Warning aus. Gehen Sie zu Server Configuration > Log:

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Damit ist die Einrichtung von OpenLiteSpeed als Reverse Proxy abgeschlossen. Wir starten LSWS erneut neu und gehen auf den Link https://cloud.connect.link und sehen:

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Damit Nextcloud uns zulässt, muss die Domain cloud.connect.link zur Liste der vertrauenswürdigen Domains hinzugefügt werden. Gehen Sie zur Bearbeitung der config.php. Nextcloud habe ich automatisch bei der Installation von Ubuntu installiert und die Konfiguration befindet sich hier: /var/snap/nextcloud/current/nextcloud/config.
Wir fügen dem Schlüssel trusted_domains den Parameter 'cloud.connect.link' hinzu:

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

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Außerdem muss in derselben Konfiguration die IP-Adresse unseres Proxies angegeben werden. Ich weise darauf hin, dass die Adresse diejenige sein muss, die dem Nextcloud-Server sichtbar ist, also die IP der lokalen Schnittstelle von LSWS. Ohne diesen Schritt funktioniert das Web-Interface von Nextcloud, aber die Anwendungen können sich nicht authentifizieren.

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

Gut, danach können wir auf die Authentifizierungsoberfläche zugreifen:

Nextcloud im Inneren, OpenLiteSpeed im Äußeren: einrichten des Reverse Proxys

Aufgabe gelöst! Jetzt kann jeder Client sicher das "File Cloud" über seine persönliche URL nutzen, der Server mit den Dateien ist vom Internet getrennt, zukünftige Clients werden dasselbe erhalten und keine zusätzliche IP-Adresse wird betroffen sein.
Zusätzlich kann ein Reverse Proxy verwendet werden, um statische Inhalte bereitzustellen, aber im Fall von Nextcloud wird dies keine spürbare Geschwindigkeitssteigerung bringen. Das ist also optional und nach Wunsch.

Ich freue mich, diese Geschichte zu teilen und hoffe, dass sie jemandem nützlich sein wird. Wenn Sie elegantere und effektivere Lösungen für die gestellte Aufgabe kennen, wäre ich dankbar für Kommentare!

Quelle: habr.com

60GB SSD 8Gb DDR4