Si e vendosni OpenLiteSpeed si një server me anë të proxy për Nextcloud, i cili ndodhet në rrjetin e brendshëm?
Një mrekulli, por kërkimi në Habrë për OpenLiteSpeed nuk jep asgjë! Po e korrigjoj këtë padrejtësi, sepse LSWS është një server web i shkëlqyer. E dashuroj për shpejtësinë dhe ndërfaqen e tij moderne të administratës:

Megjithëse OpenLiteSpeed është më i njohur si "akcelerator" për WordPress, në këtë artikull do të tregoj një përdorim mjaft specifik të tij. Ajo që dua të them është përdorimi si një reverse proxy për kërkesat. Mund të thoni se është më e zakonshme të përdorni nginx për këtë? Do të bie dakord. Por na pëlqen shumë LSWS!
Proksimi është në rregull, por ku? Në një shërbim po aq të mrekullueshëm - Nextcloud. Ne përdorim Nextcloud për të krijuar "cloud" privat për shkëmbimin e skedarëve. Për çdo klient ne i ndajnë një VM të veçantë me Nextcloud dhe nuk duam t'i ekspozojmë "jashtë". Në vend të kësaj, ne proksikojmë kërkesat përmes një reverse proxy të përbashkët. Ky zgjidhje lejon:
1) të heqë serverin ku ruhen të dhënat e klientit nga interneti dhe
2) të kursejë adresa IP.
Skema duket kështu:

ĂshtĂ« e qartĂ« qĂ« skema Ă«shtĂ« e thjeshtuar, pasi organizimi i infrastrukturĂ«s sĂ« shĂ«rbimeve web nuk Ă«shtĂ« tema e kĂ«tij artikulli.
Gjithashtu, në këtë artikel do të kaloj instalimin dhe konfigurimin bazë të Nextcloud, për më tepër ka materiale të përkushtuara në këtë temë në Habrë. Por do të tregoj sigurisht konfigurimet pa të cilat Nextcloud nuk do të funksionojë pas proxy.
E dhënë:
Nextcloud është instaluar në hostin 1 dhe është konfigurua për të punuar në http (pa SSL), ka vetëm një ndërfaqe rrjetë lokale dhe një adresë IP "të errët" 172.16.22.110.
Le të konfigurim OpenLiteSpeed në hostin 2. Ai ka dy ndërfaqe, një të jashtme (që shikon në internet) dhe një të brendshme me adresën IP në rrjetin 172.16.22.0/24
Emri DNS për ndërfaqen e jashtme të hostit 2 është cloud.connect.link
Detyra:
TĂ« hyjmĂ« nga interneti nĂ« lidhjen ââ (SSL) nĂ« Nextcloud nĂ« rrjetin e brendshĂ«m.
- Ne instalojmë OpenLiteSpeed në Ubuntu 18.04.2.
Le të shtojmë repo:
wget -O â |sudo bash
sudo apt-get update
instalojmë dhe e aktivizojmë:
sudo apt-get install openlitespeed
sudo /usr/local/lsws/bin/lswsctrl start
- Le të konfigurojmë minimalisht firewall-in.
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 hosti juaj i menaxhimit to any port 7080
sudo ufw enable - Le të konfigurojmë OpenLiteSpeed si një reverse proxy.
Të krijojmë direktori për virtual host.cd /usr/local/lsws/
sudo mkdir cloud.connect.link
cd cloud.connect.link/
sudo mkdir {conf,html,logs}
sudo chown lsadm:lsadm ./conf/
Le të konfigurojmë virtual hostin nga ndërfaqja web e LSWS.
Hapim menaxhimin e URL
Default login/password: admin/123456

Adding a virtual host (Virtual Hosts > Add).
When adding, an error message will appear about the missing configuration file. This is normal and can be resolved by clicking Click to create.

In the General tab, specify Document Root (even though it wonât be needed, without it the config wonât work). The Domain Name, if not specified, will be taken from the Virtual Host Name, which we named after our domain.

Now itâs time to remember that weâre not just setting up a web server, but a reverse proxy. The following settings will tell LSWS what to proxy and where to send it. In the virtual host settings, open the External App tab and add a new application of type Web server:

Specify the name and address. The name can be arbitrary, but it should be remembered; it will be useful in the next steps. The address is where Nextcloud resides on the internal network:

In the same virtual host settings, open the Context tab and create a new context of type Proxy:

Specify the parameters: URI = /, Web server = nextcloud_1 (the name from the previous step)

Restart LSWS. This can be done with one click from the web interface, magic! (the descendant of mouse carts is speaking in me)


- Install the certificate, configure https.
we will skip, letâs agree that we already have it and it's stored along with the key in the directory /etc/letsencrypt/live/cloud.connect.link.
Create a âlistenerâ (Listeners > Add), name it âhttpsâ. Specify port 443 and mark it as Secure:

In the SSL tab, specify the path to the key and certificate:

The âlistenerâ is created, now in the Virtual Host Mappings section, add our virtual host to it:

If LSWS will only proxy to one service, the configuration can end here. But we plan to use it to route requests to different âinstancesâ depending on the domain name. And each domain will have its own certificates. Therefore, we need to go to the virtual host config again and specify its key and certificate in the SSL tab. This will need to be done for each new virtual host in the future.

Now we need to configure URL rewriting so that http requests are redirected to https.
(By the way, when will this end? Itâs about time for browsers and other software to default to https, and for no-SSL redirects to be done manually when needed).
Enable Rewrite and write the Rewrite Rules:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ } [R=301,L]

Për shkak të një keqkuptimi, nuk është e mundur të aplikoni rregullat e Rewrite në mënyrë të zakonshme për një ri-start të butë. Prandaj do ta rinisnim LSWS jo me delikatesë, por me forcë dhe efektivitet:
sudo systemctl restart lsws.service
Për të bërë që serveri të dëgjojë gjithashtu portin 80, do të krijojmë një Listener tjetër. Do ta quajmë http, do të specifikojmë portin 80 dhe do të theksojmë se ai nuk do të jetë i Sigurt:

Sipas analogjisë me konfigurimin e listener-it https, do ta lidhnim këtë me virtualhost-in tonë.
Tnow LSWS do të dëgjojë portin 80 dhe do të dirigjojë kërkesat nga ai në 443, duke rrekthyer URL-në.
Përfundimisht, rekomandoj të ulet niveli i të regjistruarve të LSWS, i cili ndryshe është vendosur si Debug. Në këtë mënyrë, logot shumohen me shpejtësi të madhe! Për shumicën e rasteve, niveli i Warning është i mjaftueshëm. Shkoni në Server Configuration > Log:

Kjo përfundon konfigurimin e OpenLiteSpeed si një proxy të anashkalueshëm. Një herë tjetër rinisim LSWS, dhe shkojmë në lidhjen dhe shohim:

Për të lejuar Nextcloud të na pranojë, është e nevojshme që domaini cloud.connect.link të shtohet në listën e domainëve të besuar. Shkoni të redaktoni config.php. Nextcloud e kam instaluar automatikisht gjatë instalimit të Ubuntu dhe konfigurimi ndodhet këtu: /var/snap/nextcloud/current/nextcloud/config.
NĂ« çelĂ«sin trusted_domains shtojmĂ« parametrin âcloud.connect.linkâ:
âtrusted_domainsâ =>
array (
0 => â172.16.22.110â,
1 => âcloud.connect.linkâ,
),

Pastaj, në të njëjtin konfigurim duhet të especificohet adresa IP e proxy-it tonë. Vëmendje, adresa duhet të jetë ajo që është e dukshme për serverin Nextcloud, dmth. IP e ndërfaqes lokale të LSWS. Pa këtë hap, ndërfaqja e web-it të Nextcloud funksionon, por aplikacionet nuk regjistrohen.
âtrusted_proxiesâ =>
array (
0 => â172.16.22.100â,
),
Shkëlqyeshëm, pas kësaj mund të hyjmë në ndërfaqen e autentifikimit:

Problemi është zgjidhur! Tani çdo klient mund të përdorë në mënyrë të sigurt "ruajtjen e skedave" me URL-në e tij personale, serveri me skedarë është i ndarë nga interneti, klientët e ardhshëm do të marrin gjithçka të njëjtë dhe asnjë adresë IP shtesë nuk do të dëmtohet.
Shtesë, mund të përdorim një reverse proxy për shpërndarjen e përmbajtjes statike, por në rastin e Nextcloud, kjo nuk do të sjellë një rritje të dukshme të shpejtësisë. Pra, kjo është opcionale dhe sipas dëshirës.
Jam i lumtur tĂ« ndaj kĂ«tĂ« histori, shpresoj se do tâi sjellĂ« dobi dikujt. NĂ«se dini metoda mĂ« delikate dhe efektive pĂ«r zgjidhjen e kĂ«saj problemi â do tĂ« isha mirĂ«njohĂ«s pĂ«r komentet!
Burimi: habr.com
