Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Hoe stel ik OpenLiteSpeed ​​in om de proxy om te keren naar Nextcloud op het interne netwerk?

Verrassend genoeg levert een zoekopdracht op Habré naar OpenLiteSpeed ​​niets op! Ik haast me om dit onrecht recht te zetten, omdat LSWS een fatsoenlijke webserver is. Ik ben er dol op vanwege zijn snelheid en mooie webbeheerinterface:

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Ook al is OpenLiteSpeed ​​het meest bekend als WordPress-accelerator, in het artikel van vandaag zal ik een vrij specifiek gebruik ervan laten zien. Namelijk reverse proxying van verzoeken (reverse proxy). U zegt dat het gebruikelijker is om hiervoor nginx te gebruiken? Ik zal het ermee eens zijn. Maar het doet zoveel pijn dat we verliefd zijn geworden op LSWS!

Proxy'en is oké, maar waar? In niet minder geweldige service - Nextcloud. We gebruiken Nextcloud om privé "file-sharing clouds" te creëren. Voor elke klant wijzen we een aparte VM toe met Nextcloud, en we willen deze niet ‘buiten’ blootstellen. In plaats daarvan proxyeren we verzoeken via een gemeenschappelijke omgekeerde proxy. Deze oplossing maakt het volgende mogelijk:
1) verwijder de server waarop de klantgegevens zijn opgeslagen van internet en
2) sla IP-adressen op.

Het diagram ziet er als volgt uit:

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Het is duidelijk dat de regeling vereenvoudigd is, omdat De organisatie van de infrastructuur voor webservices is niet het onderwerp van het artikel van vandaag.

Ook in dit artikel laat ik de installatie en basisconfiguratie van de nextcloud achterwege, vooral omdat er materiaal over dit onderwerp op Habré staat. Maar ik zal zeker de instellingen laten zien, zonder welke Nextcloud niet achter een proxy zal werken.

gegeven:
Nextcloud is geïnstalleerd op host 1 en geconfigureerd om via http te werken (zonder SSL), heeft alleen een lokale netwerkinterface en een "grijs" IP-adres 172.16.22.110.
Laten we OpenLiteSpeed ​​​​op host 2 configureren. Het heeft twee interfaces, extern (kijkt naar internet) en intern met een IP-adres op het netwerk 172.16.22.0/24
Het IP-adres van de externe interface van Host 2 is DNS-naam cloud.connect.link

doelstelling:
Ga van internet via de link 'https://cloud.connect.link' (SSL) naar Nextcloud op het interne netwerk.

  • OpenLiteSpeed ​​installeren op Ubuntu 18.04.2.

Laten we een repository toevoegen:

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

installeren, uitvoeren:

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

  • Minimale firewall-installatie.

    sudo ufw sta ssh toe
    sudo ufw standaard laat uitgaand toe
    sudo ufw standaard weigeren inkomend
    sudo ufw staat http toe
    sudo ufw allowhttps
    sudo ufw toestaan ​​van uw managementhost naar elke poort 7080
    sudo ufw inschakelen

  • Stel OpenLiteSpeed ​​in als een reverse proxy.
    Laten we mappen maken onder de virtualhost.

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

Laten we de virtuele host configureren via de LSWS-webinterface.
URL-beheer openen http://cloud.connect.link:7080
Standaard login/wachtwoord: admin/123456

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Voeg een virtuele host toe (Virtuele hosts > Toevoegen).
Bij het toevoegen verschijnt er een foutmelding: het configuratiebestand ontbreekt. Dit is normaal en wordt opgelost door op Klik om te maken te klikken.

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Geef op het tabblad Algemeen de documenthoofdmap op (hoewel dit niet nodig is, zal de configuratie zonder deze niet van de grond komen). Als de domeinnaam niet is opgegeven, wordt deze overgenomen van de virtuele hostnaam, die we onze domeinnaam hebben genoemd.

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Nu is het tijd om te onthouden dat we niet alleen een webserver hebben, maar een omgekeerde proxy. De volgende instellingen vertellen LSWS wat er moet worden geproxyd en waar. Open in de virtualhost-instellingen het tabblad Externe app en voeg een nieuwe applicatie van het type webserver toe:

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Geef de naam en het adres op. U kunt een willekeurige naam opgeven, maar u moet deze onthouden. Dit zal van pas komen in de volgende stappen. Het adres is het adres waar Nextcloud zich in het interne netwerk bevindt:

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Open in dezelfde virtuele hostinstellingen het tabblad Context en maak een nieuwe context van het type Proxy:

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Geef de parameters op: URI = /, Webserver = nextcloud_1 (naam uit de vorige stap)

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Start LSWS opnieuw. Dit gebeurt met één klik vanuit de webinterface, wonderen! (een erfelijke muisdrager spreekt in mij)

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen
Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Laten we een "luisteraar" maken (Listeners > Toevoegen), laten we deze "https" noemen. Wijs het naar poort 443 en merk op dat het veilig zal zijn:

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Geef op het tabblad SSL het pad naar de sleutel en het certificaat op:

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

De "luisteraar" is gemaakt, nu zullen we in de sectie Virtuele hosttoewijzingen onze virtuele host eraan toevoegen:

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Als LSWS slechts naar één service proxy, kan de configuratie worden voltooid. Maar we zijn van plan het te gebruiken om verzoeken naar verschillende "instances" te sturen, afhankelijk van de domeinnaam. En alle domeinen zullen hun eigen certificaten hebben. Daarom moet u naar de virtualhost-configuratie gaan en opnieuw de sleutel en het certificaat opgeven op het SSL-tabblad. In de toekomst zou dit voor elke nieuwe virtuele host moeten gebeuren.

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Het blijft nodig om het herschrijven van URL's zo te configureren dat http-verzoeken worden geadresseerd aan https.
(Wanneer zal dit trouwens eindigen? Het wordt tijd dat browsers en andere software standaard naar https gaan en indien nodig handmatig doorsturen naar no-SSL).
Schakel Herschrijven inschakelen in en schrijf herschrijfregels:

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

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Door een vreemd misverstand is het onmogelijk om Rewrite-regels toe te passen met de gebruikelijke Graceful-herstart. Daarom zullen we LSWS niet gracieus, maar grof en efficiënt herstarten:

sudo systemctl herstart lsws.service

Om de server naar poort 80 te laten luisteren, gaan we een nieuwe luisteraar maken. Laten we het http noemen, de 80e poort specificeren en aangeven dat deze niet-beveiligd zal zijn:

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Laten we, naar analogie met de https-listenerinstelling, onze virtuele host eraan koppelen.

Nu luistert LSWS op poort 80 en verzendt van daaruit verzoeken naar 443, waarbij de URL wordt herschreven.
Concluderend raad ik aan om het LSWS-logboekniveau te verlagen, dat standaard is ingesteld op Debug. In deze modus vermenigvuldigen de boomstammen zich razendsnel! In de meeste gevallen is het waarschuwingsniveau voldoende. Ga naar Serverconfiguratie > Logboek:

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Hiermee is de configuratie van OpenLiteSpeed ​​als reverse proxy voltooid. Start LSWS opnieuw op en volg de link https://cloud.connect.link en zie:

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Om ervoor te zorgen dat Nextcloud ons binnenlaat, moeten we het cloud.connect.link-domein toevoegen aan de vertrouwde lijst. Laten we config.php gaan bewerken. Ik heb Nextcloud automatisch geïnstalleerd tijdens het installeren van Ubuntu en de configuratie bevindt zich hier: /var/snap/nextcloud/current/nextcloud/config.
Voeg de parameter 'cloud.connect.link' toe aan de sleutel trust_domains:

'vertrouwde_domeinen' =>
reeks (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Verder moet u in dezelfde configuratie het IP-adres van onze proxy opgeven. Ik vestig uw aandacht op het feit dat het adres moet worden opgegeven zoals zichtbaar is voor de Nextcloud-server, d.w.z. Het IP-adres van de lokale LSWS-interface. Zonder deze stap werkt de Nextcloud-webinterface, maar zijn applicaties niet geautoriseerd.

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

Geweldig, daarna kunnen we naar de autorisatie-interface gaan:

Nextcloud binnen en buiten OpenLiteSpeed: reverse proxying instellen

Probleem opgelost! Nu kan elke client veilig gebruik maken van de “file cloud” op zijn eigen persoonlijke url, de server met bestanden is gescheiden van het internet, toekomstige clients ontvangen alles hetzelfde en geen enkel extra IP-adres wordt beïnvloed.
Daarnaast kun je een reverse proxy gebruiken om statische content aan te leveren, maar in het geval van Nextcloud zal dit geen merkbare snelheidsverhoging opleveren. Het is dus optioneel en optioneel.

Ik ben blij om dit verhaal te delen, ik hoop dat het voor iemand nuttig zal zijn. Als u elegantere en efficiëntere methoden kent om het probleem op te lossen, zal ik u dankbaar zijn voor de opmerkingen!

Bron: www.habr.com

Voeg een reactie