Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

Hoe OpenLiteSpeed in te stellen als reverse proxy voor Nextcloud in een intern netwerk?

Verbazingwekkend, maar de zoekopdracht naar OpenLiteSpeed op Habr levert niets op! Ik haast me om deze onrechtvaardigheid recht te zetten, want LSWS is een geweldige webserver. Ik houd van de snelheid en de moderne webbeheertool:

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

Hoewel OpenLiteSpeed het meest bekend staat als 'versneller' voor WordPress, zal ik in dit artikel een vrij specifieke toepassing tonen. Namelijk het reverse proxy-insturen van verzoeken. U vraagt zich misschien af of het niet gebruikelijker is om nginx daarvoor te gebruiken? Dat ben ik met u eens. Maar we zijn nu eenmaal dol op LSWS!

Proxy is prima, maar waarheen? Naar een minstens even geweldige service – Nextcloud. We gebruiken Nextcloud om privĆ© 'clouds voor bestandsuitwisseling' te creĆ«ren. Voor elke klant geven we een aparte VM met Nextcloud en we willen ze niet 'buiten' tentoonstellen. In plaats daarvan proxyen we verzoeken via een gezamenlijke reverse proxy. Deze oplossing maakt het mogelijk:
1) de server waarop de klantgegevens worden opgeslagen uit het internet te verwijderen, en
2) IP-adressen te besparen.

Het diagram ziet er als volgt uit:

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

Het is duidelijk dat het diagram vereenvoudigd is, aangezien de organisatie van webservice-infrastructuren niet het onderwerp van dit artikel is.

In dit artikel zal ik ook de installatie en basisconfiguratie van Nextcloud overslaan, vooral omdat er op Habr materialen zijn die aan dit onderwerp zijn gewijd. Maar ik zal zeker de instellingen tonen zonder welke Nextcloud niet zal werken achter de proxy.

Gegeven:
Nextcloud is geĆÆnstalleerd op host 1 en is ingesteld om via http (zonder SSL) te werken, met alleen een lokale netwerkinterface en een 'grijs' IP-adres 172.16.22.110.
Laten we OpenLiteSpeed instellen op host 2. Deze heeft twee interfaces, een externe (die naar het internet kijkt) en een interne met een IP-adres in het netwerk 172.16.22.0/24.
Het DNS-naam cloud.connect.link verwijst naar het IP-adres van de externe interface van host 2.

Taak:
Toegang tot Nextcloud in het interne netwerk via de link ā€˜https://cloud.connect.linkā€˜ (SSL).

  • We installeren OpenLiteSpeed op Ubuntu 18.04.2.

Laten we de repository toevoegen:

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

installeren en starten:

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

  • Laten we de firewall minimaal configureren.

    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 uw beheerserver to any port 7080
    sudo ufw enable

  • Laten we OpenLiteSpeed instellen als reverse proxy.
    We creƫren mappen voor de virtual host.

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

Laten we de virtual host instellen vanuit de webinterface van LSWS.
We openen de management URL. http://cloud.connect.link:7080
Standaard gebruikersnaam/wachtwoord: admin/123456

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

Voeg een virtual host toe (Virtual Hosts > Toevoegen).
Bij het toevoegen verschijnt een foutmelding – het ontbreken van een configuratiebestand. Dit is normaal, het kan worden opgelost door op Klik om te creĆ«ren te drukken.

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

In het tabblad Algemeen geven we de Document Root op (ook al is deze niet nodig, zonder deze start de configuratie niet). De Domeinnaam, als deze niet wordt opgegeven, wordt genomen uit de Virtuele Host Naam, die we naar de naam van ons domein hebben genoemd.

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

Het is tijd om te onthouden dat we niet alleen een webserver hebben, maar ook een reverse proxy. De volgende instellingen zullen LSWS aangeven wat te proxy'en en waarheen. In de instellingen van de virtual host openen we het tabblad Externe App en voegen we een nieuwe applicatie toe van het type Webserver:

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

We geven een naam en adres op. De naam kan willekeurig zijn, maar het is belangrijk om deze te onthouden, dit komt van pas in de volgende stappen. Het adres is de plek waar Nextcloud zich bevindt in het interne netwerk:

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

In dezelfde instellingen van de virtual host openen we het tabblad Context en creƫren we een nieuwe context van het type Proxy:

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

We geven de parameters op: URI = \, Webserver = nextcloud_1 (de naam van de vorige stap)

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

We herstarten LSWS. Dit gebeurt met een klik vanuit de webinterface, wonderbaarlijk! (de afstammeling van muizenkappers spreekt in mij)

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing
Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

Laten we een 'listener' creƫren (Listeners > Toevoegen), we noemen deze 'https'. We geven deze port 443 en markeren dat deze veilig zal zijn:

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

In het tabblad SSL geven we het pad naar de sleutel en het certificaat op:

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

De 'listener' is aangemaakt, nu voegen we in het gedeelte Virtuele Host Mapping onze virtual host toe:

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

Als LSWS alleen naar ƩƩn service zal proxy'en, kunnen we de configuratie afronden. Maar we zijn van plan deze te gebruiken om verzoeken door te geven aan verschillende 'instanties' afhankelijk van de domeinnaam. En alle domeinen zullen hun eigen certificaten hebben. Daarom moeten we naar de configuratie van de virtual host gaan en opnieuw in het tabblad SSL zijn sleutel en certificaat opgeven. In de toekomst moet dit voor elke nieuwe virtual host worden gedaan.

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

We moeten nu de url herschrijven zodat http-verzoeken naar https worden gestuurd.
(Trouwens, wanneer eindigt dit al? Het is tijd dat browsers en andere software standaard https gebruiken, en om over te schakelen naar no-SSL handmatig indien nodig).
We schakelen Enable Rewrite in en schrijven de Rewrite Rules:

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

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

Rewrite-regels kunnen om een vreemde reden niet worden toegepast met Graceful restart. Daarom herstarten we LSWS niet elegant, maar ruw en efficiƫnt:

sudo systemctl restart lsws.service

Om de server ook op poort 80 te laten luisteren, creƫren we een andere Listener. We noemen hem http, geven poort 80 op en geven aan dat hij niet-beveiligd zal zijn:

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

In overeenstemming met de configuratie van de https listener, koppelen we deze aan onze virtual host.

Nu zal LSWS luisteren op poort 80 en verzoeken naar 443 doorsturen, waarbij de url herschreven wordt.
Tot slot raad ik aan om het logniveau van LSWS te verlagen, dat standaard is ingesteld op Debug. In deze modus vermenigvuldigen de logs zich razendsnel! Voor de meeste gevallen is een niveau van Warning voldoende. We gaan naar Server Configuration > Log:

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

hiermee is de configuratie van OpenLiteSpeed als reverse proxy afgerond. We herstarten LSWS opnieuw, gaan naar de link https://cloud.connect.link en zien:

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

Om Nextcloud toegang te verlenen, moeten we het domein cloud.connect.link aan de lijst met vertrouwde domeinen toevoegen. We gaan config.php bewerken. Nextcloud heb ik automatisch geĆÆnstalleerd bij het installeren van Ubuntu en de configuratie bevindt zich hier: /var/snap/nextcloud/current/nextcloud/config.
Aan de sleutel trusted_domains voegen we de parameter ā€˜cloud.connect.link’ toe:

ā€˜trusted_domains’ =>
array (
0 => ā€˜172.16.22.110’,
1 => ā€˜cloud.connect.link’,
),

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

Vervolgens moeten we in dezelfde configuratie het IP-adres van onze proxy opgeven. Let op, het adres moet dat zijn wat zichtbaar is voor de Nextcloud server, dat wil zeggen het IP van de lokale interface van LSWS. Zonder deze stap werkt de webinterface van Nextcloud, maar applicaties kunnen niet worden geauthentiseerd.

ā€˜trusted_proxies’ =>
array (
0 => ā€˜172.16.22.100’,
),

Prima, na dit kunnen we toegang krijgen tot de inloginterface:

Nextcloud van binnen, en van buiten OpenLiteSpeed: we configureren reverse proxy-ing

De taak is opgelost! Nu kan elke klant veilig gebruikmaken van het 'cloud-bestand' via zijn persoonlijke url, de server met bestanden is gescheiden van het internet, toekomstige klanten krijgen hetzelfde en geen enkel extra IP-adres wordt aangetast.
Daarnaast kan een reverse proxy worden gebruikt voor het afleveren van statische inhoud, maar in het geval van Nextcloud levert dit geen merkbare snelheidwinst op. Dus dit is optioneel en naar wens.

Ik ben blij deze ervaring te delen, hopelijk is het nuttig voor iemand. Als je elegantere en effectievere methoden hebt voor het oplossen van de gestelde taak – ik ben dankbaar voor de opmerkingen!

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster