Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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:

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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:

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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 ‘https://cloud.connect.link‘ (SSL).

  • Installera OpenLiteSpeed pĂ„ Ubuntu 18.04.2.

LÀgg till förrÄdet:

wget -O — http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh |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 http://cloud.connect.link:7080
Standard inloggning/lösenord: admin/123456

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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.

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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.

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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:

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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:

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy
Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

Skapa en 'listener' (Listeners > LÀgg till), kalla den 'https'. Ange den för port 443 och markera att den ska vara SÀker:

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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.

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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 ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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:

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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:

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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',
),

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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:

Nextcloud inuti, och utanför OpenLiteSpeed: vi konfigurerar för omvÀnd proxy

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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster