Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Ako nastaviť OpenLiteSpeed na reverzné proxy pre Nextcloud, ktorý sa nachádza v internej sieti?

Prekvapivo, ale vyhľadávanie na Habr-e s dotazom OpenLiteSpeed nič nenájde! Rýchlo sa chystám napraviť túto nespravodlivosť, pretože LSWS je zaslúžený webový server. Milujem ho za rýchlosť a moderné administračné webové rozhranie:

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Napriek tomu, že OpenLiteSpeed je najznámejší ako 'zrýchľovač' WordPressu, v dnešnom článku ukážem dosť špecifické použití. A to je reverzné proxy procesov (reverse proxy). Poviete, že na to je obvykle pohodlnejšie použiť nginx? Súhlasím. Ale LSWS sa nám naozaj zapáčil!

Proxy je OK, ale kam? Do nemenej skvelého služby – Nextcloud. Používame Nextcloud na vytvorenie súkromných „cloudov na zdieľanie súborov“. Pre každého klienta vytvárame samostatnú VM s Nextcloud a nechceme ich vystaviť „navonok“. Namiesto toho presmerovávame požiadavky cez spoločné reverzné proxy. Toto riešenie umožňuje:
1) odstrániť server, na ktorom sú uložené dáta klienta, z internetu a
2) šetriť IP adresy.

Schéma vyzerá takto:

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Je jasné, že schéma je zjednodušená, keďže organizácia infraštruktúry webových služieb nie je témou dnešného článku.

Tiež v tomto článku vynechám inštaláciu a základné nastavenie Nextcloudu, o čom sú už na Habr-e ďalšie materiály. Ale určite ukážem nastavenia, bez ktorých Nextcloud nebude fungovať za proxy.

Dané:
Nextcloud je nainštalovaný na hoste 1 a nastavený na prácu cez http (bez SSL), má iba lokálne sieťové rozhranie a „šedú“ IP adresu 172.16.22.110.
Nastavíme OpenLiteSpeed na hoste 2. Má dve rozhrania, vonkajšie (smeruje do internetu) a vnútorné s IP adresou v sieti 172.16.22.0/24
Na IP adresu vonkajšieho rozhrania hosta 2 vedie DNS meno cloud.connect.link

Úloha:
Dostať sa z internetu cez odkaz ‘https://cloud.connect.link‘ (SSL) na Nextcloud vo vnútornej sieti.

  • Inštalujeme OpenLiteSpeed na Ubuntu 18.04.2.

Pridáme repozitár:

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

inštalujeme, spúšťame:

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

  • Minimalne nastavíme firewall.

    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 váš hostiteľský server to any port 7080
    sudo ufw enable

  • Nastavíme OpenLiteSpeed ako reverzné proxy.
    Vytvoríme adresáre pre virtuálny host.

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

Nastavíme virtuálny hostiteľ z webového rozhrania LSWS.
Otvárame správu URL http://cloud.connect.link:7080
Predvolené prihlasovacie meno/heslo: admin/123456

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Pridávame virtuálny hostiteľ (Virtual Hosts > Add).
Pri pridávaní sa objaví správa o chybe – chýbajúci konfiguračný súbor. To je normálne, vyrieši sa kliknutím na Kliknite na vytvorenie.

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Na záložke General uvedieme Document Root (aj keď nebude potrebný, bez neho konfigurácia nefunguje). Názov domény, ak ho neuviedol, bude prevzatý z názvu virtuálneho hostiteľa, ktorý sme nazvali menom našej domény.

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Teraz si musíme pripomenúť, že máme nielen webový server, ale aj reverzný proxy. Nasledujúce nastavenia uvedú LSWS, čo proxy a kam. V nastaveniach virtuálneho hostiteľa otvoríme záložku External App a pridáme novú aplikáciu typu Web server:

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Uvedieme názov a adresu. Názov môžeme zadať ľubovoľne, ale musíme si ho zapamätať, neskôr sa zíde. Adresa – tá, kde sa nachádza Nextcloud v internej sieti:

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

V rovnakých nastaveniach virtuálneho hostiteľa otvoríme záložku Context a vytvoríme nový kontext typu Proxy:

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Uvedieme parametre: URI = /, Web server = nextcloud_1 (názov z predchádzajúceho kroku)

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Reštartujeme LSWS. To sa robí jedným klikom z webového rozhrania, zázraky! (vo mne hovorí dedič myšerov)

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy
Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

  • Nastavíme certifikát, nastavíme https.
    Postup získania certifikátu vynecháme, dohodneme sa, že už ho máme a leží spolu s kľúčom v adresári /etc/letsencrypt/live/cloud.connect.link.

Vytvoríme "poslucháča" (Listeners > Add), nazveme ho "https". Uvedieme mu port 443 a označíme, že bude Secure:

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Na záložke SSL uvedieme cestu k kľúču a certifikátu:

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

"Poslucháč" je vytvorený, teraz v sekcii Virtual Host Mappings pridáme k nemu náš virtuálny hostiteľ:

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Ak bude LSWS proxy iba na jeden servis, nastavenie sa môže skončiť. Ale plánujeme ho používať na prenášanie požiadaviek do rôznych "inštancií" v závislosti od názvu domény. A všetky domény budú mať svoje certifikáty. Preto musíme ísť do konfigurácie virtuálneho hostiteľa a znovu uviesť na záložke SSL jeho kľúč a certifikát. V budúcnosti to treba robiť pre každý nový virtuálny hostiteľ.

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Zostáva nastaviť prepis url, aby http požiadavky smerovali na https.
(Mimochodom, kedy už toto skončí? Už je čas, aby prehliadače a iný softvér predvolene chodili na https a presmerovanie na no-SSL robili manuálne, ak je to potrebné).
Povoľujeme Enable Rewrite a zapisujeme Rewrite Rules:

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

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Aplikovať pravidlá Rewrite nie je možné pomocou obvyklého Graceful restartu kvôli podivnému nedorozumeniu. Preto reštartujeme LSWS nie elegantne, ale tvrdo a efektívne:

sudo systemctl restart lsws.service

Aby server počúval aj na porte 80, vytvoríme ďalší Listener. Nazveme ho http, uvedieme port 80 a to, že bude ne-Secure:

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Podobne ako pri nastavovaní https listenera, priradíme mu náš virtuálny hosť.

Teraz LSWS bude počúvať na porte 80 a presmerovávať z neho požiadavky na 443, prepíšu url.
Na záver odporúčam znížiť úroveň logovania LSWS, ktorá je predvolene nastavená na Debug. V tomto režime sa logy množia bleskovo! Pre väčšinu prípadov stačí úroveň Warning. Prejdeme na Server Configuration > Log:

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Týmto je nastavenie OpenLiteSpeed ako reverzného proxy dokončené. Opäť reštartujeme LSWS, ideme na odkaz https://cloud.connect.link a vidíme:

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Aby nás Nextcloud pustil, je potrebné pridať doménu cloud.connect.link do zoznamu dôveryhodných. Ideme upraviť config.php. Nextcloud som inštaloval automaticky pri inštalácii Ubuntu a konfigurácia sa nachádza tu: /var/snap/nextcloud/current/nextcloud/config.
Kľúču trusted_domains pridáme parameter 'cloud.connect.link':

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

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Potom, v tej istej konfigurácii musíme uviesť IP adresu nášho proxy. Upozorňujem, že adresu je potrebné uviesť tú, ktorá je viditeľná serveru Nextcloud, t.j. IP lokálneho rozhrania LSWS. Bez tohto kroku webové rozhranie Nextcloud funguje, ale aplikácie sa neautorizujú.

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

Skvele, po tom sa môžeme dostať do rozhrania autorizácie:

Nextcloud vo vnútri a OpenLiteSpeed zvonku: nastavujeme reverzné proxy

Úloha je vyriešená! Teraz môže každý klient bezpečne využívať "súborové cloud" prostredníctvom svojho osobného url, server so súbormi je oddelený od internetu, budúci klienti dostanú to isté a žiadna ďalšia IP adresa nebude zranená.
Ďalšie je možné použiť reverzný proxy pre dodanie statického obsahu, ale v prípade Nextcloud to neprinesie pociteľný nárast rýchlosti. Takže je to voliteľné a podľa želania.

Rád sa podeľím o tento príbeh, dúfam, že niekomu bude užitočný. Ak poznáte elegantnejšie a efektívnejšie metódy na riešenie daného problému – budem vďačný za komentáre!

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster