Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Wie konfiguriert man OpenLiteSpeed fĂŒr das Reverse-Proxying in Nextcloud, das sich im internen Netzwerk befindet?

Es ist erstaunlich, aber die Suche nach OpenLiteSpeed auf Habr bringt nichts! Ich möchte diese Ungerechtigkeit korrigieren, denn LSWS ist ein erstklassiger Webserver. Ich schĂ€tze ihn fĂŒr seine Geschwindigkeit und die moderne Management-OberflĂ€che.

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Obwohl OpenLiteSpeed am bekanntesten als "Beschleuniger" fĂŒr WordPress ist, werde ich in diesem Artikel eine recht spezifische Anwendung vorstellen. NĂ€mlich das Reverse-Proxying von Anfragen. Sie könnten sagen, dass man dafĂŒr eher nginx verwendet? Dem stimme ich zu. Aber wir sind einfach zu sehr in LSWS verliebt!

Proxying ist in Ordnung, aber wohin? Zu einem nicht weniger großartigen Dienst – Nextcloud. Wir verwenden Nextcloud zur Erstellung privater "Cloud-Speicher". FĂŒr jeden Kunden richten wir eine eigene VM mit Nextcloud ein und möchten diese nicht "nach außen" stellen. Stattdessen leiten wir die Anfragen ĂŒber einen gemeinsamen Reverse-Proxy um. Diese Lösung ermöglicht es:
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 intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Es ist klar, dass das Schema vereinfacht ist, da die Organisation der Infrastruktur fĂŒr Webdienste nicht das Thema dieses Artikels ist.

In diesem Artikel werde ich auch die Installation und die grundlegende Konfiguration von Nextcloud auslassen, zumal es auf Єабр dazu Materialien gibt. Ich werde jedoch unbedingt die Einstellungen zeigen, ohne die Nextcloud hinter einem Proxy nicht funktionieren wĂŒrde.

Gegeben:
Nextcloud ist auf Host 1 installiert und auf den Betrieb ĂŒber http (ohne SSL) konfiguriert, hat nur ein lokales Netzwerkinterface und eine "graue" IP-Adresse 172.16.22.110.
Wir konfigurieren OpenLiteSpeed auf Host 2. Dieser hat zwei Interfaces, ein externes (das ins Internet schaut) und ein internes mit der IP-Adresse im Netzwerk 172.16.22.0/24.
Die DNS-Name cloud.connect.link verweist auf die IP-Adresse des externen Interfaces von Host 2.

Aufgabe:
Von extern gelangt man ĂŒber den Link ‘https://cloud.connect.link‘ (SSL) zu Nextcloud im internen Netzwerk.

  • 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 und starten:

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

  • Wir konfigurieren die Firewall minimal.

    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 Ihr Verwaltungsserver to any port 7080
    sudo ufw enable

  • Wir konfigurieren 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/

Lass uns den virtuellen Host ĂŒber die LSWS-Webschnittstelle konfigurieren.
Öffnen Sie die URL-Management-Seite. http://cloud.connect.link:7080
Standardlogin/Passwort: admin/123456

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Virtuellen Host hinzufĂŒgen (Virtual Hosts > HinzufĂŒgen).
Beim HinzufĂŒgen erscheint eine Fehlermeldung – dass die Konfigurationsdatei fehlt. Das ist normal und lĂ€sst sich durch Klicken auf 'Click to create' beheben.

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Im Reiter 'Allgemein' geben wir das Document Root an (auch wenn es nicht benötigt wird, ohne es startet die Konfiguration nicht). Der Domainname wird, falls nicht angegeben, aus dem Virtual Host Name entnommen, den wir mit dem Namen unserer Domain benannt haben.

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Jetzt sollten wir uns daran erinnern, dass wir nicht nur einen Webserver, sondern ein Reverse Proxy haben. Die folgenden Einstellungen zeigen LSWS, was zu proxyen ist und wohin. In den Einstellungen des virtuellen Hosts öffnen wir den Reiter 'External App' und fĂŒgen eine neue Anwendung des Typs Webserver hinzu:

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Geben Sie einen Namen und eine Adresse an. Der Name kann beliebig sein, sollte aber notiert werden, da er in den nÀchsten Schritten benötigt wird. Die Adresse ist die, wo Nextcloud im internen Netzwerk lÀuft:

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

In den gleichen Einstellungen des virtuellen Hosts öffnen wir den Reiter 'Context' und erstellen einen neuen Kontext vom Typ Proxy:

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

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

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Wir starten LSWS neu. Das geschieht mit nur einem Klick im Web-Interface, ein Wunder! (Der vererbte Mouse-Builder spricht aus mir)

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys
Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

  • Wir installieren das Zertifikat und konfigurieren https.
    Die Verfahren zum Erwerb des Zertifikats lassen wir weg, wir gehen davon aus, dass es bereits vorliegt und zusammen mit dem SchlĂŒssel im Verzeichnis /etc/letsencrypt/live/cloud.connect.link liegt.

Wir erstellen einen ‚Listener‘ (Listeners > HinzufĂŒgen), nennen ihn ‚https‘. Wir weisen ihm den Port 443 zu und markieren, dass er sicher ist:

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Im SSL-Tab geben wir den Pfad zum SchlĂŒssel und zum Zertifikat an:

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Der ‚Listener‘ ist erstellt, jetzt fĂŒgen wir im Abschnitt Virtual Host Mappings unseren virtuellen Host hinzu:

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Wenn LSWS nur fĂŒr einen Service proxyt, kann die Konfiguration beendet werden. Aber wir planen, ihn fĂŒr die Weiterleitung von Anfragen an verschiedene ‚Instanzen‘ je nach Domainnamen zu nutzen. Und fĂŒr alle Domains werden eigene Zertifikate benötigt. Daher mĂŒssen wir in die Konfiguration des virtuellen Hosts gehen und im SSL-Tab erneut seinen SchlĂŒssel und sein Zertifikat angeben. In Zukunft muss dies fĂŒr jeden neuen virtuellen Host gemacht werden.

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Jetzt mĂŒssen wir die URL-Umschreibung konfigurieren, damit http-Anfragen an https weitergeleitet werden.
(Übrigens, wann endet das endlich? Es wĂ€re an der Zeit, dass Browser und andere Software standardmĂ€ĂŸig auf HTTPS umschalten und die Umleitung auf No-SSL manuell durchfĂŒhren, wenn nötig).
Aktivieren Sie Enable Rewrite und schreiben Sie die Rewrite-Regeln:

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

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Die Rewrite-Regeln können leider nicht mit dem gewohnten Graceful Restart angewendet werden. Daher starten wir LSWS auf unkonventionelle, aber effektive Weise neu:

sudo systemctl restart lsws.service

Um den Server auf Port 80 zu hören, erstellen wir einen weiteren Listener. Nennen wir ihn http, geben wir den Port 80 an und setzen ihn als nicht-sicher:

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Analog zur Konfiguration des HTTPS-Listeners, verknĂŒpfen wir ihn mit unserem Virtual Host.

Jetzt wird LSWS auf Port 80 lauschen und Anfragen an Port 443 weiterleiten, indem es die URL umschreibt.
Abschließend empfehle ich, das Logging-Niveau von LSWS zu senken, das standardmĂ€ĂŸig auf Debug eingestellt ist. In diesem Modus vervielfĂ€ltigen sich die Logs blitzschnell! FĂŒr die meisten FĂ€lle reicht das Niveau Warning. Gehen Sie zu Serverkonfiguration > Log:

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Damit ist die Konfiguration von OpenLiteSpeed als Reverse Proxy abgeschlossen. Starten wir LSWS erneut und gehen Sie zu dem Link https://cloud.connect.link und sehen:

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Um Nextcloud zu nutzen, muss die Domain cloud.connect.link in die Liste der vertrauenswĂŒrdigen Domains aufgenommen werden. Lassen Sie uns die config.php bearbeiten. Nextcloud habe ich automatisch bei der Installation von Ubuntu installiert und die Konfiguration befindet sich hier: /var/snap/nextcloud/current/nextcloud/config.
FĂŒgen Sie dem Parameter trusted_domains den Eintrag ‚cloud.connect.link‘ hinzu:

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

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Anschließend mĂŒssen wir im gleichen Konfigurationsdokument die IP-Adresse unseres Proxys angeben. Ich möchte darauf hinweisen, dass die Adresse diejenige sein muss, die fĂŒr den Nextcloud-Server sichtbar ist, d. h. die IP der lokalen Schnittstelle von LSWS. Ohne diesen Schritt funktioniert die WeboberflĂ€che von Nextcloud, aber Anwendungen können sich nicht anmelden.

‚trusted_proxies‘ =>
array (
0 => ‚172.16.22.100‘,
),

Fantastisch, danach können wir auf die AuthentifizierungsoberflÀche zugreifen:

Nextcloud intern und OpenLiteSpeed extern: Einrichten des Reverse-Proxys

Aufgabe erledigt! Jetzt kann jeder Kunde sicher das „Cloud-Speicher“-System ĂŒber seine persönliche URL nutzen. Der Dateiserver ist vom Internet getrennt, zukĂŒnftige Kunden erhalten das Gleiche und keine zusĂ€tzliche IP-Adresse wird beeintrĂ€chtigt.
ZusĂ€tzlich kann ein Reverse-Proxy verwendet werden, um statische Inhalte zu liefern, aber im Fall von Nextcloud wird dies keinen spĂŒrbaren Geschwindigkeitszuwachs bringen. Daher ist dies optional und auf Wunsch.

Ich freue mich, diese Geschichte zu teilen und hoffe, dass sie fĂŒr jemanden nĂŒtzlich sein wird. Wenn Sie elegantere und effektivere Methoden zur Lösung der Aufgabe kennen, bin ich dankbar fĂŒr Kommentare!

Quelle: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster