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.

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:

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 ââ (SSL) zu Nextcloud im internen Netzwerk.
- Wir installieren OpenLiteSpeed auf Ubuntu 18.04.2.
FĂŒgen wir das Repository hinzu:
wget -O â |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.
Standardlogin/Passwort: admin/123456

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.

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.

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:

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:

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

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

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


- Wir installieren das Zertifikat und konfigurieren https.
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:

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

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

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.

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 ^(.*)$ } [R=301,L]

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:

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:

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

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â,
),

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:

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
