ProHoster > Blog > podávání > Nextcloud uvnitř a vně OpenLiteSpeed: nastavení zpětného proxy
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í:
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:
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
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
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.
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.
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:
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:
Ve stejném nastavení virtuálního hostitele otevřete kartu Kontext a vytvořte nový kontext typu Proxy:
Zadejte parametry: URI = /, Webový server = nextcloud_1 (název z předchozího kroku)
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)
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ý:
Na kartě SSL zadejte cestu ke klíči a certifikátu:
„Posluchač“ byl vytvořen, nyní do něj v sekci Virtual Host Mappings přidáme našeho virtuálního hostitele:
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.
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:
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ý:
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:
Tím je konfigurace OpenLiteSpeed jako reverzní proxy. Znovu restartujte LSWS a přejděte na odkaz https://cloud.connect.link a vidí:
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:
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í:
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!