Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Jak nastavím OpenLiteSpeed ​​pro reverzní proxy na Nextcloud v interní síti?

Hledání OpenLiteSpeed ​​​​na Habré překvapivě nic nedává! Spěchám napravit tuto nespravedlnost, protože LSWS je slušný webový server. Líbí se mi pro jeho rychlost a elegantní webové administrační rozhraní:

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

I když je OpenLiteSpeed ​​nejslavnější jako WordPress „akcelerátor“, v dnešním článku ukážu jeho poměrně konkrétní využití. A to reverzní proxy požadavků (reverse proxy). Říkáte, že je pro to běžnější používat nginx? budu souhlasit. Ale bolí to tak moc, že ​​jsme se do LSWS zamilovali!

Proxy je v pořádku, ale kde? V neméně skvělé službě - Nextcloud. Nextcloud používáme k vytváření soukromých „sdílení souborů“. Každému klientovi přidělujeme samostatný VM s Nextcloud a nechceme je vystavovat „venku“. Místo toho zastupujeme požadavky prostřednictvím společného reverzního proxy. Toto řešení umožňuje:
1) odebrat server, na kterém jsou klientská data uložena, z internetu a
2) uložit ip-adresy.

Systém vypadá takto:

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Je jasné, že schéma je zjednodušené, protože organizace infrastruktury webových služeb není tématem dnešního článku.

I v tomto článku vynechám instalaci a základní konfiguraci nextcloudu, tím spíše, že na Habré jsou na toto téma materiály. Určitě ale ukážu nastavení, bez kterého Nextcloud za proxy fungovat nebude.

Vzhledem k:
Nextcloud je nainstalován na hostiteli 1 a nakonfigurován pro práci přes http (bez SSL), má pouze místní síťové rozhraní a „šedou“ IP adresu 172.16.22.110.
Pojďme nakonfigurovat OpenLiteSpeed ​​​​na hostiteli 2. Má dvě rozhraní, externí (vypadá do Internetu) a interní s IP adresou v síti 172.16.22.0/24
IP adresa externího rozhraní hostitele 2 je název DNS cloud.connect.link

Úkol:
Získejte z internetu přes odkaz 'https://cloud.connect.link' (SSL) na Nextcloud ve vnitřní síti.

  • Instalace OpenLiteSpeed ​​​​na Ubuntu 18.04.2.

Přidáme úložiště:

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

nainstalovat, spustit:

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

  • Minimální nastavení firewallu.

    sudo ufw povolit ssh
    sudo ufw výchozí povolit odchozí
    sudo ufw výchozí zakázat příchozí
    sudo ufw povolit http
    sudo ufw povolit https
    sudo ufw povolit z váš hostitel pro správu na jakýkoli port 7080
    sudo ufw povolit

  • Nastavte OpenLiteSpeed ​​​​jako reverzní proxy.
    Pojďme vytvořit adresáře pod virtualhostem.

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

Pojďme nakonfigurovat virtuálního hostitele z webového rozhraní LSWS.
Otevřete správu adres URL http://cloud.connect.link:7080
Výchozí přihlašovací jméno/heslo: admin/123456

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Přidejte virtuálního hostitele (Virtuální hostitelé > Přidat).
Při přidávání se objeví chybové hlášení - chybí konfigurační soubor. To je normální, vyřešíte to kliknutím na Kliknutím vytvořte.

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

V záložce Obecné zadejte kořen dokumentu (ačkoli to není potřeba, konfigurace se bez něj nespustí). Název domény, pokud není zadán, bude převzat z názvu virtuálního hostitele, který jsme pojmenovali jako název naší domény.

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Nyní je čas si připomenout, že nemáme jen webový server, ale reverzní proxy. Následující nastavení řeknou LSWS, co a kde proxy. V nastavení virtuálního hostitele otevřete kartu Externí aplikace a přidejte novou aplikaci typu webový server:

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Zadejte jméno a adresu. Můžete zadat libovolný název, ale musíte si jej zapamatovat, bude se vám hodit v dalších krocích. Adresa je ta, kde Nextcloud žije ve vnitřní síti:

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Ve stejném nastavení virtuálního hostitele otevřete kartu Kontext a vytvořte nový kontext typu Proxy:

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Zadejte parametry: URI = /, Webový server = nextcloud_1 (název z předchozího kroku)

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Restartujte LSWS. To se provádí jedním kliknutím z webového rozhraní, zázraky! (mluví ve mně dědičný nositel myši)

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy
Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

  • Vložíme certifikát, nakonfigurujeme https.
    Postup pro získání certifikátu vynecháme, odsouhlasíme, že už ho máme a lžeme s klíčem v adresáři /etc/letsencrypt/live/cloud.connect.link.

Vytvořme si „posluchač“ (Listeners > Add), říkejme mu „https“. Nasměrujte jej na port 443 a všimněte si, že bude zabezpečený:

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Na kartě SSL zadejte cestu ke klíči a certifikátu:

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

„Posluchač“ byl vytvořen, nyní do něj v sekci Virtual Host Mappings přidáme našeho virtuálního hostitele:

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Pokud bude LSWS proxy pouze k jedné službě, konfiguraci lze dokončit. Ale plánujeme jej používat k odesílání požadavků do různých „instancí“ v závislosti na názvu domény. A všechny domény budou mít své vlastní certifikáty. Proto musíte přejít do konfigurace virtuálního hostitele a znovu zadat jeho klíč a certifikát v záložce SSL. V budoucnu by to mělo být provedeno pro každého nového virtuálního hostitele.

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Zbývá nakonfigurovat přepisování url tak, aby požadavky http byly adresovány https.
(Mimochodem, kdy to skončí? Je čas, aby prohlížeče a další software ve výchozím nastavení přešly na https a v případě potřeby ručně přeposlaly na bez SSL).
Zapněte možnost Povolit přepis a napsat pravidla přepisu:

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

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Kvůli podivnému nedorozumění je nemožné aplikovat pravidla přepisování s obvyklým Graceful restartem. Proto restartujeme LSWS ne elegantně, ale hrubě a efektivně:

sudo systemctl restart lsws.service

Aby server naslouchal portu 80, vytvořte další Listener. Říkejme tomu http, určete 80. port a že nebude bezpečný:

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Analogicky s nastavením https posluchače k ​​němu připojíme našeho virtuálního hostitele.

Nyní bude LSWS naslouchat na portu 80 a odesílat z něj požadavky na 443, přičemž přepisuje adresu URL.
Na závěr doporučuji snížit úroveň protokolování LSWS, která je standardně nastavena na Debug. V tomto režimu se polena množí rychlostí blesku! Pro většinu případů je dostatečná úroveň Varování. Přejděte na Konfigurace serveru > Protokol:

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Tím je konfigurace OpenLiteSpeed ​​​​jako reverzní proxy. Znovu restartujte LSWS a přejděte na odkaz https://cloud.connect.link a vidí:

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Aby nás Nextcloud pustil dovnitř, musíme doménu cloud.connect.link přidat do seznamu důvěryhodných. Pojďme upravit config.php. Nextcloud jsem nainstaloval automaticky při instalaci Ubuntu a konfigurace se nachází zde: /var/snap/nextcloud/current/nextcloud/config.
Přidejte parametr 'cloud.connect.link' do klíče trusted_domains:

'trusted_domains' =>
pole (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Dále ve stejné konfiguraci musíte zadat IP adresu našeho proxy. Upozorňuji na to, že adresa musí být uvedena ta, která je viditelná pro server Nextcloud, tzn. IP místního rozhraní LSWS. Bez tohoto kroku webové rozhraní Nextcloud funguje, ale aplikace nejsou autorizovány.

'trusted_proxy' =>
pole (
0 => '172.16.22.100',
),

Skvělé, poté se můžeme dostat do autorizačního rozhraní:

Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy

Problém je vyřešen! Nyní může každý klient bezpečně používat „souborový cloud“ na své osobní adrese URL, server se soubory je oddělen od internetu, budoucí klienti dostanou vše stejné a nebude ovlivněna ani jedna další IP adresa.
Kromě toho můžete k doručování statického obsahu použít reverzní proxy, ale v případě Nextcloud to nepřinese znatelné zvýšení rychlosti. Takže je to volitelné a volitelné.

Jsem rád, že mohu sdílet tento příběh, doufám, že bude pro někoho užitečný. Pokud znáte elegantnější a efektivnější způsoby řešení problému, budu vděčný za komentáře!

Zdroj: www.habr.com

Přidat komentář