Kuidas seadistada OpenLiteSpeed'i tagasipöördumisproksiks Nextcloudis, mis asub siseturus?
Üllatav, kuid Habrist OpenLiteSpeed'i otsimine ei anna midagi! Kiirustan seda ebaõiglust parandama, sest LSWS on väärikas veebi-server. Mulle meeldib see oma kiirus ja stiilse haldussekkumise poolest:

Kuigi OpenLiteSpeed on kõige tuntum kui WordPressi 'kiirendi', näitan ma täna selle üsna spetsiifilist rakendust. Nimelt tagasipöördumisproksiks (reverse proxy). Te ütlete, et selleks on mugavam kasutada nginx'i? Ma nõustun. Kuid LSWS meeldib meile tõeliselt!
Proksimine on okei, aga kuhu? Vähemalt sama mõnus teenus – Nextcloud. Kasutame Nextcloudi privaatsete 'failide vahetamise pilvede' loomisel. Iga kliendi jaoks eraldame erineva VM-i koos Nextcloudiga ja ei soovi neid "välja lasta". Selle asemel proksime päringud ühise tagasipöördumisproksi kaudu. See lahendus võimaldab:
1) eemaldada teenuse server, kus kliendi andmed asuvad, internetist ja
2) säästa IP-aadresse.
Scheem näeb välja selline:

On selge, et skeem on lihtsustatud, kuna veebiteenuste infrastruktuuri korraldamine ei ole täna artikli teema.
Selles artiklis jätan ka Nextcloudi installimise ja põhiseadistuse vahele, kuna Habrist on sellele teemal materjale. Kuid kindlasti näitan seadistusi, ilma milleta Nextcloud ei tööta proksi taga.
Antud:
Nextcloud on installitud hostis 1 ja seadistatud tööks http (ilma SSLita), tal on ainult kohaliku võrgu liides ja 'hall' IP-aadress 172.16.22.110.
Seadistame OpenLiteSpeed'i hostis 2. Sellel on kaks liidest, väline (vaatab internetti) ja sisemine, mille IP-aadress on 172.16.22.0/24
Hosti 2 välimise liidese IP-aadressile viib DNS-nimi cloud.connect.link
Task:
Jõudmine internetist lingile ‘‘ (SSL) Nextcloudisse sisetöös.
- Installime OpenLiteSpeed'i Ubuntu 18.04.2-le.
Lisame repo:
wget -O — |sudo bash
sudo apt-get update
installime, käivitame:
sudo apt-get install openlitespeed
sudo /usr/local/lsws/bin/lswsctrl start
- Minimaalselt seadistame tulemüür.
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 teie haldusserver to any port 7080
sudo ufw enable - Seadistame OpenLiteSpeed'i tagasipöördumisproksiks.
Loome kataloogid virtuaalhosti jaoks.cd /usr/local/lsws/
sudo mkdir cloud.connect.link
cd cloud.connect.link/
sudo mkdir {conf,html,logs}
sudo chown lsadm:lsadm ./conf/
Seadistame virtuaalhosti LSWS veebi kasutajaliidesest.
Avame haldURL-i
Vaikimisi kasutajanimi/parool: admin/123456

Lisame virtuaalhosti (Virtual Hosts > Lisa).
Lisamisel kuvatakse vea teade - konfiguratsioonifail puudub. See on normaalne, probleem lahendatakse vajutades Kliki, et luua.

Vahekaardil Üldine määrame Dokumentide Katalooge (kuigi seda ei ole vaja, ilma selleta konfiguuri ei tööta). Domeeninimi, kui seda ei näidata, võetakse Virtual Host Name'ist, mille nimetasime oma domeeni nimeks.

Nüüd on aeg meenutada, et meil on mitte lihtsalt veebiserver, vaid reverse proxy. Järgmised seaded näitavad LSWS-le, mida проксировать ja kuhu. Virtuaalhosti seadetes avame vahekaart Väline Rakendus ja lisame uue rakenduse tüüpi Veebiserver:

Määrame nime ja aadressi. Nime saab valida meelevaldselt, kuid tuleb meeles pidada, see kasulik järgmistel sammudel. Aadress on see, kus Nextcloud asub sisevõrgus:

Samades virtuaalhosti seadetes avame vahekaardi Kontekst ja loome uue konteksti tüüpi Proxy:

Määrame parameetrid: URI = /, Veebiserver = nextcloud_1 (nimi eelmisest sammust)

Taaskäivitame LSWS-i. Seda saab teha ühe klikiga veebiliidesest, imeline! (minus räägib pärilik hiiremurdja)


- Paigaldame sertifikaadi, seadistame https-i.
me jätame vahele, lepime kokku, et see meil juba on ja asub koos võtmega kataloogis /etc/letsencrypt/live/cloud.connect.link.
Loome "kuulaja" (Listeners > Lisa), nimetame selle "https". Määrame selle 443 pordile ja märkime, et see on Turvaline:

Vahekaardil SSL määrame tee võtme ja sertifikaadini:

"Kuulaja" on loodud, nüüd lisame virtuaalhosti kaardistamise osasse meie virtuaalhosti:

Kui LSWS on ainult ühe teenuse jaoks проксировать, võib seadistuse lõpetada. Kuid plaanime seda kasutada erinevate "instantside" jaoks domeeninime järgi. Ja kõigil domeenidel on oma sertifikaadid. Seetõttu peame minema virtuaalhosti konfi ja uuesti määrama vahekaardil SSL tema võtme ja sertifikaadi. Tulevikus tuleb seda teha iga uue virtuaalhosti jaoks.

Jäänud on seadistada URL-i ümberkirjutamine, et http-päringud suunataks https-ile.
(Muide, millal see lõpuks lõppeb? On aeg, et brauserid ja muu tarkvara vaikimisi kasutaksid https-i, ning edasine suunamine no-SSL-ile teostataks käsitsi vajadusel).
Aktiveerime Enable Rewrite ja kirjutame ümberkirjutamise reeglid:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ } [R=301,L]

Kuna ebamugavust ei saa tavalisi Rewrite reegleid elegantset Graceful restart'i rakendada. Seetõttu taaskäivitame LSWS'i mitte elegantselt, vaid agressiivselt ja tõhusalt:
sudo systemctl restart lsws.service
Kuna server peab kuulama ka 80. porti, loome veel ühe Listener'i. Nimeks anname http, määrame 80. port ja märkime, et see ei ole turvaline:

Sama moodi nagu https listener'i seadistamisel, sidume meie virtuaalhostiga.
Nüüd kuulab LSWS 80. porti ja suunab sealt päringud 443-le, ümberkirjutades url'id.
Lõpetuseks soovitan vähendada LSWS logimise taset, mis on vaikimisi määratud Debug. Sellises režiimis logid paljunevad välkkiirusel! Enamikul juhtudel piisab tasemest Warning. Liigume Server Configuration > Log:

Sellega on OpenLiteSpeed'i seadistamine tagumise proxy'ina lõpetatud. Taaskäivitame LSWS'i veel ühe korra, liigume lingile ja näeme:

Kuna Nextcloud ei luba meid, peame lisama domeeni cloud.connect.link usaldatute nimekirja. Liigume ning muudame config.php. Installisin Nextcloud automaatselt pärast Ubuntu installi ja konfi asub siin: /var/snap/nextcloud/current/nextcloud/config.
Usaldatud domeenide võtmesse lisame parameetri 'cloud.connect.link':
'trusted_domains' =>
massiiv (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

Järgmiseks tuleb samas konfis määrata meie proxy IP-aadress. Joonin tähelepanu, et tuleb märkida aadress, mis on Nextcloud serverile nähtav, st LSWS'i kohaliku liidese IP-aadress. Ilma selle sammuta töötab Nextcloudi veebiliides, kuid rakendused ei authenticate.
'trusted_proxies' =>
massiiv (
0 => '172.16.22.100',
),
Suurepärane, pärast seda saame siseneda sisenemisliidesesse:

Ülesanne on lahendatud! Nüüd saavad kõik kliendid turvaliselt kasutada 'failide pilve' oma isiklikult url'il, server failidega on eraldatud internetist, tulevased kliendid saavad sama hea, ja mitte ühtegi lisanduvat IP-aadressi ei kahjustata.
Lisaks saab kasutada reverse proxy't staatilise sisu tarnimiseks, kuid Nextcloudi puhul ei too see märkimisväärset kiiruselisa. Seega on see valikuline ja soovi korral.
Mul on hea meel jagada seda lugu, loodan, et see on kellelegi kasulik. Kui tead täiuslikumaid ja tõhusamaid meetodeid seatud ülesande lahendamiseks – olen tänulik kommentaaride eest!
Allikas: habr.com
