Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Kako lahko konfiguriram OpenLiteSpeed ​​​​da obrne proxy na Nextcloud, ki se nahaja v mojem notranjem omrežju?

Presenetljivo iskanje na Habréju za OpenLiteSpeed ​​​​ne prinese ničesar! Hitro popravljam to krivico, ker je LSWS vreden spletni strežnik. Všeč mi je zaradi njegove hitrosti in domiselnega spletnega skrbniškega vmesnika:

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Kljub dejstvu, da je OpenLiteSpeed ​​​​najbolj znan kot "pospeševalec" WordPress-a, bom v današnjem članku prikazal njegovo precej specifično uporabo. Namreč obratno posredovanje zahtevkov. Bi rekli, da je za to bolj običajno uporabljati nginx? Se bom strinjal. Ampak res smo se zaljubili v LSWS!

Proxy je ok, ampak kje? Enako čudovita storitev je Nextcloud. Nextcloud uporabljamo za ustvarjanje zasebnih "oblakov za skupno rabo datotek". Vsakemu odjemalcu dodelimo ločen VM z Nextcloudom in jih ne želimo izpostavljati »zunaj«. Namesto tega posredujemo zahteve prek običajnega obratnega posrednika. Ta rešitev vam omogoča:
1) odstranite strežnik, na katerem so shranjeni podatki stranke, iz interneta in
2) shranite naslove IP.

Diagram je videti tako:

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Jasno je, da je diagram poenostavljen, ker organiziranje infrastrukture spletnih storitev ni tema današnjega članka.

Tudi v tem članku bom izpustil namestitev in osnovno konfiguracijo nextcloud, še posebej, ker obstajajo materiali na to temo na Habréju. Vsekakor pa vam bom pokazal nastavitve, brez katerih Nextcloud ne bo deloval za proxyjem.

Glede na:
Nextcloud je nameščen na gostitelju 1 in konfiguriran za delo prek http (brez SSL), ima samo lokalni omrežni vmesnik in “siv” naslov IP 172.16.22.110.
Konfigurirajmo OpenLiteSpeed ​​​​na gostitelju 2. Ima dva vmesnika, zunanjega (pregleduje internet) in notranjega z naslovom IP v omrežju 172.16.22.0/24
Ime DNS cloud.connect.link vodi do naslova IP zunanjega vmesnika gostitelja 2

Naloga:
Pridobite iz interneta s povezavo 'https://cloud.connect.link' (SSL) na Nextcloud v notranjem omrežju.

  • Namestitev OpenLiteSpeed ​​​​na Ubuntu 18.04.2.

Dodajmo repozitorij:

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

namestite, zaženite:

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

  • Postavimo minimalni požarni zid.

    sudo ufw dovoli ssh
    sudo ufw privzeto dovoli odhodno
    sudo ufw privzeto zavrni dohodno
    sudo ufw omogoči http
    sudo ufw dovoli https
    sudo ufw dovoli od vaš vodstveni gostitelj na katera koli vrata 7080
    omogoči sudo ufw

  • Konfigurirajmo OpenLiteSpeed ​​​​kot obratni proxy.
    Ustvarimo imenike za virtualhost.

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

Konfigurirajmo virtualnega gostitelja iz spletnega vmesnika LSWS.
Odpiranje upravljanja URL-jev http://cloud.connect.link:7080
Privzeta prijava/geslo: admin/123456

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Dodajte navideznega gostitelja (Navidezni gostitelji > Dodaj).
Pri dodajanju se prikaže sporočilo o napaki, ki nakazuje, da manjka konfiguracijska datoteka. To je normalno in ga je mogoče rešiti s klikom Kliknite za ustvarjanje.

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

V zavihku General (Splošno) določite Document Root (čeprav ni potreben, konfiguracija brez njega ne bo delovala). Ime domene, če ni navedeno, bo vzeto iz imena navideznega gostitelja, ki smo ga poimenovali ime naše domene.

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Zdaj je čas, da se spomnimo, da nimamo samo spletnega strežnika, ampak tudi obratni proxy. Naslednje nastavitve bodo LSWS povedale, kaj posredovati in kje. V nastavitvah virtualhost odprite zavihek Zunanja aplikacija in dodajte novo aplikacijo tipa spletni strežnik:

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Navedemo ime in naslov. Določite lahko poljubno ime, vendar si ga morate zapomniti; uporabno bo v naslednjih korakih. Naslov je kraj, kjer Nextcloud živi v notranjem omrežju:

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

V istih nastavitvah navideznega gostitelja odprite zavihek Kontekst in ustvarite nov kontekst vrste Proxy:

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Določite parametre: URI = /, spletni strežnik = nextcloud_1 (ime iz prejšnjega koraka)

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Znova zaženite LSWS. To se naredi z enim klikom v spletnem vmesniku, čudeži! (govori dedna mišonoska v meni)

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja
Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

  • Namestimo certifikat in konfiguriramo https.
    Postopek pridobitve certifikata izpustili ga bomo in se strinjali, da ga že imamo in je skupaj s ključem v imeniku /etc/letsencrypt/live/cloud.connect.link.

Ustvarimo »poslušalnik« (Poslušalci > Dodaj), poimenujmo ga »https«. Usmerimo ga na vrata 443 in upoštevajmo, da bo varno:

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

V zavihku SSL navedite pot do ključa in potrdila:

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

»Poslušalec« je bil ustvarjen, zdaj mu bomo v razdelku Preslikave navideznega gostitelja dodali našega navideznega gostitelja:

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Če bo LSWS proxy samo za eno storitev, je konfiguracijo mogoče dokončati. Vendar ga nameravamo uporabiti za posredovanje zahtev različnim "organom", odvisno od imena domene. In vse domene bodo imele svoje certifikate. Zato morate odpreti konfiguracijo virtualnega gostitelja in znova določiti njegov ključ in potrdilo na zavihku SSL. V prihodnosti je treba to narediti za vsakega novega virtualnega gostitelja.

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Vse, kar ostane, je, da konfigurirate prepisovanje URL-jev, tako da so http zahteve naslovljene na https.
(Mimogrede, kdaj se bo to končalo? Čas je, da brskalniki in druga programska oprema privzeto preklopijo na https in po potrebi ročno posredujejo na no-SSL).
Vklopite Enable Rewrite in zapišite pravila za ponovno pisanje:

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

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Zaradi nenavadnega nesporazuma ne morete uporabiti pravil Rewrite z običajnim Graceful ponovnim zagonom. Zato znova zaženimo LSWS ne elegantno, ampak grobo in učinkovito:

sudo systemctl znova zaženi lsws.service

Da bo strežnik poslušal vrata 80, bomo ustvarili še enega poslušalca. Poimenujmo ga http, označimo 80. vrata in dejstvo, da ne bo varno:

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Po analogiji z nastavitvijo poslušalca https preslikajmo našega virtualnega gostitelja nanj.

Zdaj bo LSWS poslušal vrata 80 in z njih poslal zahteve na 443 ter prepisal url.
Na koncu priporočam znižanje ravni beleženja LSWS, ki je privzeto nastavljena na Odpravljanje napak. V tem načinu se hlodi množijo s svetlobno hitrostjo! V večini primerov zadostuje raven opozorila. Pojdite na Konfiguracija strežnika > Dnevnik:

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

S tem je dokončana konfiguracija OpenLiteSpeed ​​​​kot obratnega posrednika. Še enkrat znova zaženemo LSWS, sledimo povezavi https://cloud.connect.link in vidimo:

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Da nas Nextcloud spusti, moramo domeno cloud.connect.link dodati na seznam zaupanja vrednih. Pojdimo urediti config.php. Nextcloud sem namestil samodejno ob namestitvi Ubuntuja in konfiguracija se nahaja tukaj: /var/snap/nextcloud/current/nextcloud/config.
Ključu trusted_domains dodajte parameter 'cloud.connect.link':

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

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Nato morate v isti konfiguraciji določiti naslov IP našega proxyja. Upoštevajte, da mora biti naslov naveden kot tisti, ki je viden strežniku Nextcloud, tj. IP lokalnega vmesnika LSWS. Brez tega koraka spletni vmesnik Nextcloud deluje, vendar aplikacije niso avtorizirane.

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

Super, po tem lahko pridemo do avtorizacijskega vmesnika:

Nextcloud znotraj in zunaj OpenLiteSpeed: nastavitev obratnega proxyja

Problem rešen! Sedaj lahko vsak odjemalec varno uporablja »datotečni oblak« s svojim osebnim URL-jem, strežnik z datotekami je ločen od interneta, prihodnji odjemalci bodo prejeli vse enako in noben dodatni naslov IP ne bo poškodovan.
Poleg tega lahko uporabite povratni proxy za dostavo statične vsebine, vendar v primeru Nextclouda to ne bo povzročilo opaznega povečanja hitrosti. Torej je to neobvezno in neobvezno.

Z veseljem delim to zgodbo, upam, da bo komu koristila. Če poznate bolj elegantne in učinkovite metode za rešitev te težave, bi bil hvaležen za vaše komentarje!

Vir: www.habr.com

Dodaj komentar