ProHoster > Blog > Administrácia > Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera
Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera
Ako nastavím OpenLiteSpeed® na reverzný proxy server Nextcloud vo vnútornej sieti?
Prekvapivo, vyhľadávanie na Habré pre OpenLiteSpeed nedáva nič! Ponáhľam sa napraviť túto nespravodlivosť, pretože LSWS je slušný webový server. Páči sa mi pre jeho rýchlosť a elegantné webové administračné rozhranie:
Aj keď je OpenLiteSpeed najznámejší ako WordPress „urýchľovač“, v dnešnom článku ukážem jeho pomerne konkrétne využitie. Menovite reverzné proxy servery (reverse proxy). Hovoríte, že na to je bežnejšie používať nginx? budem súhlasiť. Ale bolí to tak veľmi, že sme sa do LSWS zamilovali!
Proxy je v poriadku, ale kde? V nemenej úžasnej službe - Nextcloud. Nextcloud používame na vytváranie súkromných „oblakov na zdieľanie súborov“. Pre každého klienta prideľujeme samostatný VM s Nextcloud a nechceme ich vystavovať „vonku“. Namiesto toho zastupujeme požiadavky prostredníctvom spoločného reverzného proxy. Toto riešenie umožňuje:
1) odstrániť server, na ktorom sú uložené klientske údaje, z internetu a
2) uložiť IP adresy.
Schéma vyzerá takto:
Je zrejmé, že schéma je zjednodušená, pretože organizácia infraštruktúry webových služieb nie je témou dnešného článku.
Aj v tomto článku vynechám inštaláciu a základnú konfiguráciu nextcloudu, najmä preto, že Habré má materiály na túto tému. Určite ale ukážem nastavenia, bez ktorých Nextcloud za proxy nebude fungovať.
Vzhľadom na to:
Nextcloud je nainštalovaný na hostiteľovi 1 a nakonfigurovaný na prácu cez http (bez SSL), má iba lokálne sieťové rozhranie a „sivú“ IP adresu 172.16.22.110.
Nakonfigurujme OpenLiteSpeed na hostiteľovi 2. Má dve rozhrania, externé (vyzerá na internet) a interné s IP adresou v sieti 172.16.22.0/24
IP adresa externého rozhrania hostiteľa 2 je názov DNS cloud.connect.link
cieľ:
Získajte z internetu prostredníctvom odkazu „https://cloud.connect.link' (SSL) do Nextcloud vo vnútornej sieti.
Nastavte OpenLiteSpeed ako reverzný proxy server.
Vytvorme adresáre pod virtualhostom.
cd /usr/local/lsws/
sudo mkdirc cloud.connect.link
cd cloud.connect.link/
sudo mkdir {conf,html,logs}
sudo chown lsadm:lsadm ./conf/
Nakonfigurujme virtuálneho hostiteľa z webového rozhrania LSWS.
Otvoriť správu adries URL http://cloud.connect.link:7080
Predvolené prihlasovacie meno/heslo: admin/123456
Pridajte virtuálneho hostiteľa (Virtual Hosts > Add).
Pri pridávaní sa zobrazí chybové hlásenie - chýba konfiguračný súbor. Je to normálne, vyriešite to kliknutím na tlačidlo Vytvoriť kliknutím.
Na karte Všeobecné zadajte koreň dokumentu (hoci to nie je potrebné, bez neho sa konfigurácia nerozbehne). Ak nie je zadaný názov domény, bude prevzatý z názvu virtuálneho hostiteľa, ktorý sme nazvali názvom našej domény.
Teraz je čas pripomenúť si, že nemáme len webový server, ale aj reverzný proxy. Nasledujúce nastavenia povedia LSWS, čo a kde má proxy server. V nastaveniach virtuálneho hostiteľa otvorte kartu Externá aplikácia a pridajte novú aplikáciu typu webový server:
Zadajte meno a adresu. Môžete zadať ľubovoľný názov, ale musíte si ho zapamätať, bude sa vám hodiť v ďalších krokoch. Adresa je adresa, na ktorej Nextcloud žije vo vnútornej sieti:
V rovnakých nastaveniach virtuálneho hostiteľa otvorte kartu Kontext a vytvorte nový kontext typu Proxy:
Zadajte parametre: URI = /, Webový server = nextcloud_1 (názov z predchádzajúceho kroku)
Reštartujte LSWS. To sa deje jedným kliknutím z webového rozhrania, zázraky! (dedičný nosič myši vo mne hovorí)
Vložíme certifikát, nakonfigurujeme https. Postup na získanie certifikátu vynecháme, dohodneme sa, že ho už máme a klameme s kľúčom v adresári /etc/letsencrypt/live/cloud.connect.link.
Vytvorme si „poslucháč“ (Listeners > Add), nazvime ho „https“. Nasmerujte ho na port 443 a všimnite si, že bude zabezpečený:
Na karte SSL zadajte cestu ku kľúču a certifikátu:
„Poslucháč“ bol vytvorený, teraz k nemu v sekcii Virtual Host Mappings pridáme nášho virtuálneho hostiteľa:
Ak LSWS bude proxy len pre jednu službu, konfiguráciu je možné dokončiť. Plánujeme ho však použiť na odosielanie požiadaviek do rôznych „inštancií“ v závislosti od názvu domény. A všetky domény budú mať svoje vlastné certifikáty. Preto musíte prejsť do konfigurácie virtuálneho hostiteľa a znova zadať jeho kľúč a certifikát na karte SSL. V budúcnosti by sa to malo robiť pre každého nového virtuálneho hostiteľa.
Zostáva nakonfigurovať prepisovanie adresy URL tak, aby požiadavky http boli adresované https. (Mimochodom, kedy sa to skončí? Nastal čas, aby prehliadače a iný softvér predvolene prešli na https a v prípade potreby manuálne preposielali na no-SSL).
Zapnite možnosť Povoliť prepisovanie a zapisovanie pravidiel prepisovania:
Kvôli zvláštnemu nedorozumeniu nie je možné použiť pravidlá prepisovania s obvyklým graceful reštartom. Preto reštartujeme LSWS nie elegantne, ale hrubo a efektívne:
sudo systemctl reštart lsws.service
Aby server počúval port 80, vytvorte ďalší Listener. Nazvime to http, uveďte 80. port a že nebude bezpečný:
Analogicky s nastavením https poslucháča k nemu pripojíme nášho virtuálneho hostiteľa.
Teraz bude LSWS počúvať na porte 80 a odosielať z neho požiadavky na 443, pričom prepíše adresu URL.
Na záver odporúčam znížiť úroveň protokolovania LSWS, ktorá je predvolene nastavená na Debug. V tomto režime sa polená množia rýchlosťou blesku! Vo väčšine prípadov je úroveň Varovania dostatočná. Prejdite do časti Konfigurácia servera > Protokol:
Tým sa dokončí konfigurácia OpenLiteSpeed ako reverzného proxy. Znova reštartujte LSWS a kliknite na odkaz https://cloud.connect.link a pozri:
Aby nás Nextcloud pustil dovnútra, musíme doménu cloud.connect.link pridať do zoznamu dôveryhodných. Poďme upraviť config.php. Nextcloud som nainštaloval automaticky pri inštalácii Ubuntu a konfigurácia sa nachádza tu: /var/snap/nextcloud/current/nextcloud/config.
Pridajte parameter 'cloud.connect.link' do kľúča trusted_domains:
Ďalej v tej istej konfigurácii musíte zadať IP adresu nášho proxy. Upozorňujem na skutočnosť, že adresa musí byť uvedená tak, aby bola viditeľná pre server Nextcloud, t.j. IP miestneho rozhrania LSWS. Bez tohto kroku webové rozhranie Nextcloud funguje, ale aplikácie nie sú autorizované.
'trusted_proxy' =>
pole (
0 => „172.16.22.100“,
),
Skvelé, potom sa môžeme dostať do autorizačného rozhrania:
Problém je vyriešený! Teraz môže každý klient bezpečne používať „súborový cloud“ na svojej osobnej adrese URL, server so súbormi je oddelený od internetu, budúci klienti dostanú všetko rovnaké a neovplyvní to ani jednu ďalšiu IP adresu.
Okrem toho môžete použiť reverzný proxy na doručovanie statického obsahu, ale v prípade Nextcloud to neprinesie výrazné zvýšenie rýchlosti. Takže je to voliteľné a voliteľné.
Som rád, že môžem zdieľať tento príbeh, dúfam, že bude pre niekoho užitočný. Ak poznáte elegantnejšie a efektívnejšie spôsoby riešenia problému, budem vďačný za komentáre!