Wie konfiguriere ich OpenLiteSpeed so, dass der Proxy in Nextcloud im internen Netzwerk umgekehrt wird?
Überraschenderweise bringt eine Suche in Habré nach OpenLiteSpeed nichts! Ich beeile mich, diese Ungerechtigkeit zu korrigieren, weil LSWS ein würdiger Webserver ist. Ich liebe ihn für die Geschwindigkeit und die modische Webadministrationsoberfläche:

Trotz der Tatsache, dass OpenLiteSpeed als "Beschleuniger" von WordPress am bekanntesten ist, werde ich im heutigen Artikel seine ziemlich spezifische Anwendung zeigen. Reverse-Proxy-Anforderungen (Reverse-Proxy). Sie sagen, dass es üblicher ist, dafür Nginx zu verwenden? Ich werde zustimmen. Aber es hat uns wirklich wehgetan, LSWS zu lieben!
Proxying ok, aber wo? Ein ebenso wunderbarer Service ist Nextcloud. Wir verwenden Nextcloud, um private "Filesharing-Clouds" zu erstellen. Für jeden Client weisen wir Nextcloud eine separate VM zu und möchten sie nicht "out" verfügbar machen. Stattdessen stellen wir Anfragen über einen gemeinsamen Reverse-Proxy. Mit dieser Lösung können Sie:
- Entfernen Sie den Server, auf dem Clientdaten gespeichert sind, aus dem Internet und
- IP-Adressen speichern.
Das Schema sieht folgendermaßen aus:

Es ist klar, dass das Schema vereinfacht wird, weil Das Organisieren einer Webdienstinfrastruktur ist nicht das Thema des heutigen Artikels.
Auch in diesem Artikel werde ich auf die Installation und Grundkonfiguration von Nicht-Clauda verzichten, zumal es auf Habré Materialien zu diesem Thema gibt. Aber ich werde auf jeden Fall die Einstellungen zeigen, ohne die Nextcloud für den Proxy nicht funktioniert.
Gegeben: Nextcloud ist auf Host 1 installiert und für die Arbeit über http (ohne SSL) konfiguriert. Es verfügt nur über eine lokale Netzwerkschnittstelle und eine "graue" IP-Adresse 172.16.22.110.
Wir werden OpenLiteSpeed auf Host 2 konfigurieren. Es verfügt über zwei Schnittstellen, eine externe (sieht im Internet aus) und eine interne mit einer IP-Adresse im Netzwerk 172.16.22.0/24
Der DNS-Name cloud.connect.link führt zur IP-Adresse der externen Schnittstelle von Host 2
Aufgabe: Vom Internet über den Link ' https://cloud.connect.link ' (SSL) zu Nextcloud im internen Netzwerk gelangen.
- Installieren Sie OpenLiteSpeed unter Ubuntu 18.04.2.
Fügen Sie ein Repository hinzu:
wget -O - http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh | sudo bash
sudo apt-get update
set, run:
sudo apt-get installiere openlitespeed
sudo / usr / local / lsws / bin / lswsctrl starten
- Minimieren Sie die Firewall.
sudo ufw erlaube ssh
sudo ufw standardmäßig ausgehend zulassen
sudo ufw Standard verweigern eingehend
sudo ufw erlauben http
sudo ufw erlaube https
sudo ufw erlauben von Ihrem Management-Host zu jedem Port 7080
sudo ufw aktivieren
- Richten Sie OpenLiteSpeed als Reverse-Proxy ein.
Erstellen Sie Verzeichnisse für virtualhost.
cd / usr / local / lsws /
sudo mkdirc cloud.connect.link
cd cloud.connect.link/
sudo mkdir {conf, html, logs}
sudo chown lsadm: lsadm ./conf/
Konfigurieren Sie den virtuellen Host über die LSWS-Weboberfläche.
Öffnen Sie die URL-Verwaltung http://cloud.connect.link:7080
Standard Login / Passwort: admin / 123456

Fügen Sie einen virtuellen Host hinzu (Virtuelle Hosts> Hinzufügen).
Beim Hinzufügen wird eine Fehlermeldung angezeigt - es ist keine Konfigurationsdatei vorhanden. Dies ist normal und wird durch Klicken auf Klicken zum Erstellen gelöst.

Geben Sie auf der Registerkarte Allgemein den Dokumentstamm an (obwohl er nicht benötigt wird, wird die Konfiguration ohne ihn nicht gestartet). Wenn der Domänenname nicht angegeben ist, wird er dem Namen des virtuellen Hosts entnommen, den wir als Namen unserer Domäne bezeichnet haben.

Jetzt ist es 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 erstellt werden soll. Öffnen Sie in den Einstellungen des virtuellen Hosts die Registerkarte Externe App und fügen Sie eine neue Anwendung wie den Webserver hinzu:

Geben Sie den Namen und die Adresse an. Der Name kann beliebig angegeben werden, muss jedoch gespeichert werden, was in den nächsten Schritten hilfreich ist. Die Adresse ist, wo Nextcloud im internen Netzwerk lebt:

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

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

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


- Wir setzen das Zertifikat, konfigurieren https.
Wir werden das Verfahren zum Erhalten eines Zertifikats weglassen, uns darauf einigen, dass wir es bereits haben, und mit dem Schlüssel im Verzeichnis /etc/letsencrypt/live/cloud.connect.link liegen.
Erstellen Sie einen "Listener" (Listener> Hinzufügen) und nennen Sie ihn "https". Wir verweisen auf Port 443 und stellen fest, dass es sicher ist:

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

Es wurde ein "Listener" erstellt. Jetzt fügen wir im Abschnitt "Zuordnungen virtueller Hosts" unseren virtuellen Host hinzu:

Wenn LSWS nur einen Dienst als Proxy verwendet, kann die Konfiguration abgeschlossen werden. Wir planen jedoch, damit je nach Domain-Name Anfragen an verschiedene "Behörden" zu übertragen. Und alle Domains haben ihre eigenen Zertifikate. Daher müssen Sie zur virtualhost-Konfiguration gehen und den Schlüssel und das Zertifikat erneut auf der Registerkarte SSL angeben. In Zukunft muss dies für jeden neuen virtuellen Host erfolgen.

Es bleibt die Konfiguration des URL-Umschreibens so zu konfigurieren, dass http-Anforderungen an https adressiert werden.
(Übrigens, wann endet dies? Es ist Zeit für Browser und andere Software, standardmäßig zu https zu wechseln und bei Bedarf manuell ohne SSL weiterzuleiten.)
Aktivieren Aktivieren Sie Rewrite und schreiben Sie Rewrite-Regeln:
RewriteCond% {SERVER_PORT} 80
RewriteRule ^ (. *) $ Https: //% {SERVER_NAME}% {REQUEST_URI } [R = 301, L]

Aufgrund eines seltsamen Missverständnisses ist es unmöglich, Rewrite-Regeln mit dem üblichen Graceful-Neustart anzuwenden. Daher ist ein Neustart von LSWS nicht elegant, sondern unhöflich und effizient:
sudo systemctl lsws.service neu starten
Erstellen Sie einen weiteren Listener, damit der Server den 80. Port abhört. Nennen wir es http, geben Sie den 80. Port an und dass es nicht sicher ist:

In Analogie zum https-Listener-Setup hängen wir unseren virtuellen Host daran an.
Jetzt hört LSWS auf den 80. Port und sendet Anforderungen von diesem an 443, wobei die URL neu geschrieben wird.
Abschließend empfehle ich, die LSWS-Protokollierungsstufe zu senken, die standardmäßig als Debug festgelegt ist. In diesem Modus vermehren sich die Protokolle blitzschnell! In den meisten Fällen ist eine Warnstufe ausreichend. Gehen Sie zu Serverkonfiguration> Protokoll:

Damit ist die Konfiguration von OpenLiteSpeed als Reverse-Proxy abgeschlossen. Wir starten LSWS erneut neu, folgen dem Link https://cloud.connect.link und sehen:

Damit Nextcloud uns einlässt, müssen Sie die Domäne cloud.connect.link zur Liste der vertrauenswürdigen hinzufügen. Bearbeiten Sie die Datei config.php. Ich habe Nextcloud bei der Installation von Ubuntu automatisch installiert und die Konfiguration ist hier: / var / snap / nextcloud / current / nextcloud / config.
Fügen Sie dem Schlüssel "trust_domains" den Parameter "cloud.connect.link" hinzu:
'vertrauenswürdige_Domänen' =>
Array (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

Außerdem müssen Sie in derselben Konfiguration die IP-Adresse unseres Proxys angeben. Ich mache darauf aufmerksam, dass die Adresse angegeben werden muss, die für den Nextcloud-Server sichtbar ist, d. H. IP lokale Schnittstelle LSWS. Ohne diesen Schritt funktioniert die Nextcloud-Weboberfläche, Anwendungen sind jedoch nicht autorisiert.
'trust_proxies' =>
Array (
0 => '172.16.22.100',
),
Nun, danach können wir in die Autorisierungsoberfläche gelangen:

Das Problem ist gelöst! Jetzt kann jeder Client die „Datei-Cloud“ in seiner persönlichen URL sicher verwenden, der Server mit den Dateien ist vom Internet getrennt, zukünftige Clients erhalten dasselbe und keine einzige zusätzliche IP-Adresse leidet darunter.
Darüber hinaus können Sie den Reverse-Proxy verwenden, um statischen Inhalt bereitzustellen. Im Fall von Nextcloud führt dies jedoch nicht zu einer spürbaren Geschwindigkeitssteigerung. Das ist also optional und optional.
Ich bin froh, diese Geschichte zu teilen und hoffe, dass jemand hilfreich sein wird. Wenn Sie elegantere und effektivere Methoden zur Lösung der Aufgabe kennen, bin ich für die Kommentare dankbar!