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:

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

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:

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

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.

  • Inštalácia OpenLiteSpeed ​​​​na Ubuntu 18.04.2.

Pridajme úložisko:

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

nainštalovať, spustiť:

sudo apt-get nainštalovať openlitespeed
sudo /usr/local/lsws/bin/lswsctrl štart

  • Minimálne nastavenie brány firewall.

    sudo ufw povoliť ssh
    sudo ufw predvolene povoliť odchádzajúce
    sudo ufw predvolené zamietnuť prichádzajúce
    sudo ufw povoliť http
    sudo ufw povoliťhttps
    sudo ufw povoliť od vášho hostiteľa manažmentu na ľubovoľný port 7080
    sudo ufw umožniť

  • 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

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

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.

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

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.

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

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:

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

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:

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

V rovnakých nastaveniach virtuálneho hostiteľa otvorte kartu Kontext a vytvorte nový kontext typu Proxy:

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

Zadajte parametre: URI = /, Webový server = nextcloud_1 (názov z predchádzajúceho kroku)

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

Reštartujte LSWS. To sa deje jedným kliknutím z webového rozhrania, zázraky! (dedičný nosič myši vo mne hovorí)

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera
Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

  • 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ý:

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

Na karte SSL zadajte cestu ku kľúču a certifikátu:

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

„Poslucháč“ bol vytvorený, teraz k nemu v sekcii Virtual Host Mappings pridáme nášho virtuálneho hostiteľa:

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

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.

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

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:

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

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

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ý:

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

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:

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

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:

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

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:

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

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

Ď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:

Nextcloud vnútri a mimo OpenLiteSpeed: nastavenie reverzného proxy servera

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!

Zdroj: hab.com

Pridať komentár