Hur man konfigurerar OpenLiteSpeed för omvÀnd proxy i Nextcloud som finns i det interna nÀtverket?
FörvÄnande nog ger sökningen pÄ Habr för OpenLiteSpeed ingenting! Jag skyndar mig att rÀtta till denna orÀttvisa, eftersom LSWS Àr en vÀrdig webbserver. Jag Àlskar den för sin hastighet och stiliga webbgrÀnssnitt för administration:

Trots att OpenLiteSpeed mest Àr kÀnt som en "accelerator" för WordPress, kommer jag i dagens artikel att visa en ganska specifik tillÀmpning av den. NÀmligen omvÀnd proxy av förfrÄgningar. Du kanske sÀger att det Àr mer vanligt att anvÀnda nginx för detta? Jag hÄller med. Men vi har blivit sÄ förtjusta i LSWS!
Proxyering Ă€r okej, men vart? Till en lika fantastisk tjĂ€nst â Nextcloud. Vi anvĂ€nder Nextcloud för att skapa privata "fildelande moln". För varje kund tilldelar vi en separat VM med Nextcloud och vill inte exponera dem "ute". IstĂ€llet proxyar vi förfrĂ„gningarna genom en gemensam omvĂ€nd proxy. Den lösningen gör det möjligt att:
1) ta bort servern som lagrar kundens data frÄn internet och
2) spara IP-adresser.
Skissen ser ut sÄ hÀr:

Det Àr uppenbart att skissen Àr förenklad, eftersom organisationen av infrastruktur för webbtjÀnster inte Àr Àmnet för dagens artikel.
I denna artikel kommer jag ocksÄ att hoppa över installation och grundlÀggande konfiguration av Nextcloud, sÀrskilt eftersom det finns material pÄ Habr som Àr dedikerade till detta Àmne. Men jag kommer definitivt att visa instÀllningar utan vilka Nextcloud inte kommer att fungera bakom en proxy.
Givet:
Nextcloud Àr installerat pÄ host 1 och konfigurerat att arbeta via http (utan SSL), har bara ett lokalt nÀtverksgrÀnssnitt och "grÄ" IP-adress 172.16.22.110.
Vi konfigurerar OpenLiteSpeed pÄ host 2. Den har tvÄ grÀnssnitt, en extern (som ser ut mot internet) och en intern med IP-adress i nÀtverket 172.16.22.0/24
DNS-namnet cloud.connect.link pekar pÄ IP-adressen för det externa grÀnssnittet pÄ host 2
Uppgift:
Att nĂ„ Nextcloud i det interna nĂ€tverket frĂ„n internet via lĂ€nken ââ (SSL).
- Installera OpenLiteSpeed pÄ Ubuntu 18.04.2.
LÀgg till förrÄdet:
wget -O â |sudo bash
sudo apt-get update
installerar, startar:
sudo apt-get install openlitespeed
sudo /usr/local/lsws/bin/lswsctrl start
- Minimal konfigurera brandvÀggen.
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 din administrationsvÀrd till valfri port 7080
sudo ufw enable - Vi konfigurerar OpenLiteSpeed som en omvÀnd proxy.
Skapa kataloger för virtuella vÀrdar.cd /usr/local/lsws/
sudo mkdir cloud.connect.link
cd cloud.connect.link/
sudo mkdir {conf,html,logs}
sudo chown lsadm:lsadm ./conf/
Vi konfigurerar den virtuella vÀrden via LSWS webbgrÀnssnitt.
Ăppna hanterings-URL
Standard inloggning/lösenord: admin/123456

LÀgg till virtuell vÀrd (Virtual Hosts > LÀgg till).
Vid tillĂ€gg kommer ett felmeddelande att visas â att konfigurationsfilen saknas. Det Ă€r normalt, löses genom att trycka pĂ„ Click to create.

I fliken AllmÀnt anger vi Document Root (Àven om det inte behövs, utan det startar inte konfigurationen). DomÀnnamn, om det inte anges, kommer att tas frÄn Virtual Host Name, som vi kallade efter vÄrt domÀnnamn.

Nu Àr det dags att komma ihÄg att vi inte bara har en webbserver, utan en reverse proxy. Följande instÀllningar kommer att visa LSWS vad som ska proxas och vart. I instÀllningarna för den virtuella vÀrden öppnar vi fliken External App och lÀgger till en ny applikation av typ Webbserver:

Ange namn och adress. Namnet kan vara valfritt, men du mÄste komma ihÄg det, det kommer att vara anvÀndbart senare. Adressen Àr dÀr Nextcloud finns i det interna nÀtverket:

I de samma instÀllningarna för den virtuella vÀrden öppnar vi fliken Context och skapar en ny kontext av typ Proxy:

Ange parametrar: URI = /, Webbserver = nextcloud_1 (namn frÄn föregÄende steg)

Starta om LSWS. Detta görs med ett enda klick frÄn webbgrÀnssnittet, underverk! (detta sÀger min hÀrstamning av mus-flyttare)


- Installera certifikat, stÀll in https.
och enas om att vi redan har det och att det ligger tillsammans med nyckeln i katalogen /etc/letsencrypt/live/cloud.connect.link.
Skapa en 'listener' (Listeners > LÀgg till), kalla den 'https'. Ange den för port 443 och markera att den ska vara SÀker:

I fliken SSL anger vi sökvÀgen till nyckeln och certifikatet:

Listener har skapats, nu i avsnittet Virtual Host Mappings lÀgger vi till vÄr virtuella vÀrd:

Om LSWS bara kommer att proxas till en tjÀnst kan instÀllningen slutföras. Men vi planerar att anvÀnda den för att vidarebefordra förfrÄgningar till olika 'instanser' beroende pÄ domÀnnamnet. Och alla domÀner kommer att ha sina egna certifikat. DÀrför mÄste vi gÄ till konfigurationen av den virtuella vÀrden och Äterigen ange i fliken SSL dess nyckel och certifikat. I framtiden mÄste detta göras för varje ny virtuell vÀrd.

Det ÄterstÄr att stÀlla in URL-omskrivning sÄ att http-förfrÄgningar adresseras till https.
(Förresten, nÀr slutar detta? Det Àr dags för webblÀsare och annan programvara att som standard anvÀnda https, och att skicka till no-SSL manuellt vid behov).
Vi aktiverar Enable Rewrite och skriver Rewrite Rules:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ } [R=301,L]

Det gÄr tyvÀrr inte att anvÀnda Rewrite-regler med Graceful restart av en bisarr anledning. DÀrför kommer vi att starta om LSWS pÄ ett brutalt och effektivt sÀtt:
sudo systemctl restart lsws.service
För att servern ska lyssna pÄ port 80 skapar vi ytterligare en Listener. Vi kallar den http, anger port 80 och att den inte Àr sÀker:

PÄ samma sÀtt som med https listener, kopplar vi den till vÄr virtuella vÀrd.
Nu kommer LSWS att lyssna pÄ port 80 och dirigera förfrÄgningar frÄn den till 443, genom att skriva om url:en.
Till sist rekommenderar jag att minska loggnivÄn för LSWS, som som standard Àr instÀlld pÄ Debug. I det lÀget vÀxer loggarna snabbt! För de flesta fall Àr loggnivÄn Warning tillrÀcklig. Vi gÄr till Server Configuration > Log:

Med detta Àr konfigurationen av OpenLiteSpeed som en omvÀnd proxy avslutad. Vi startar om LSWS igen och gÄr till lÀnken och ser:

För att Nextcloud ska slÀppa in oss behöver vi lÀgga till domen cloud.connect.link i listan över betrodda. Vi gÄr och redigerar config.php. Nextcloud installerade jag automatiskt vid installationen av Ubuntu och konfigurationen finns hÀr: /var/snap/nextcloud/current/nextcloud/config.
Till trusted_domains lÀgger vi till parametrarna 'cloud.connect.link':
'trusted_domains' =>
array (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

DÀrefter mÄste vi i samma konfiguration ange IP-adressen för vÄr proxy. Jag pÄpekar att adressen mÄste vara den som Àr synlig för Nextcloud-servern, dvs. IP-adressen för LSWS:s lokala grÀnssnitt. Utan detta steg fungerar webblÀsargrÀnssnittet för Nextcloud, men appar kan inte autentisera sig.
'trusted_proxies' =>
array (
0 => '172.16.22.100',
),
UtmÀrkt, efter detta kan vi komma in i autentiseringens grÀnssnitt:

Problemet Àr löst! Nu kan varje klient tryggt anvÀnda "filmolnet" via sin personliga url, servern med filer Àr separerad frÄn internet, framtida klienter kommer att fÄ samma sak och ingen extra IP-adress kommer att pÄverkas.
Dessutom kan man anvÀnda omvÀnd proxy för att leverera statiskt innehÄll, men i fallet med Nextcloud ger det ingen mÀrkbar hastighetsökning. SÄ det Àr valfritt.
Jag Àr glad att fÄ dela denna berÀttelse, jag hoppas att den kommer att vara anvÀndbar för nÄgon. Om du kÀnner till mer eleganta och effektiva metoder för att lösa den givna uppgiften - jag skulle uppskatta kommentarer!
KĂ€lla: habr.com
