Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Cum pot configura OpenLiteSpeed ​​să inverseze proxy la Nextcloud situat în rețeaua mea internă?

În mod surprinzător, o căutare pe Habré pentru OpenLiteSpeed ​​​​nu dă nimic! Mă grăbesc să corectez această nedreptate, pentru că LSWS este un server web demn. Îl iubesc pentru viteza și interfața de administrare web elegantă:

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

În ciuda faptului că OpenLiteSpeed ​​​​este cel mai faimos ca „accelerator” WordPress, în articolul de astăzi voi arăta o aplicație destul de specifică a acestuia. Și anume, proxy inversă a cererilor. Ai spune că este mai comun să folosești nginx pentru asta? voi fi de acord. Dar ne-am îndrăgostit cu adevărat de LSWS!

Proxy-ul ok, dar unde? Un serviciu la fel de minunat este Nextcloud. Folosim Nextcloud pentru a crea „nori de partajare de fișiere” private. Pentru fiecare client alocăm o VM separată cu Nextcloud și nu dorim să le expunem „în exterior”. În schimb, solicităm proxy printr-un proxy invers comun. Această soluție vă permite să:
1) eliminați serverul pe care sunt stocate datele clientului de pe Internet și
2) salvați adrese IP.

Diagrama arată astfel:

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Este clar că diagrama este simplificată, deoarece organizarea infrastructurii serviciilor web nu este subiectul articolului de astăzi.

De asemenea, în acest articol voi omite instalarea și configurația de bază a nextcloud, mai ales că există materiale pe această temă pe Habré. Dar cu siguranță vă voi arăta setările fără de care Nextcloud nu va funcționa în spatele unui proxy.

Dat:
Nextcloud este instalat pe gazda 1 și configurat să funcționeze prin http (fără SSL), are doar o interfață de rețea locală și o adresă IP „gri” 172.16.22.110.
Să configuram OpenLiteSpeed ​​​​pe gazda 2. Are două interfețe, una externă (vizează Internetul) și una internă cu o adresă IP în rețea 172.16.22.0/24
Numele DNS cloud.connect.link duce la adresa IP a interfeței externe a gazdei 2

obiectiv:
Accesați de pe Internet folosind linkul „https://cloud.connect.link' (SSL) pe Nextcloud în rețeaua internă.

  • Instalați OpenLiteSpeed ​​​​pe Ubuntu 18.04.2.

Să adăugăm un depozit:

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

instalați, rulați:

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

  • Să instalăm un firewall minim.

    sudo ufw permit ssh
    sudo ufw default permit outgoing
    sudo ufw implicit deny incoming
    sudo ufw permit http
    sudo ufw permithttps
    sudo ufw permit din gazda dvs. de management la orice port 7080
    sudo ufw enable

  • Să configuram OpenLiteSpeed ​​ca un proxy invers.
    Să creăm directoare pentru virtualhost.

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

Să configuram virtualhost din interfața web LSWS.
Deschiderea managementului URL http://cloud.connect.link:7080
Autentificare/parolă implicită: admin/123456

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Adăugați o gazdă virtuală (Virtual Hosts > Add).
La adăugare, va apărea un mesaj de eroare care indică faptul că fișierul de configurare lipsește. Acest lucru este normal și poate fi rezolvat făcând clic pe Click pentru a crea.

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

În fila General, specificați Document Root (deși nu este necesar, configurația nu va decola fără ea). Numele de domeniu, dacă nu este specificat, va fi preluat din Virtual Host Name, pe care l-am numit numele domeniului nostru.

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Acum este timpul să ne amintim că nu avem doar un server web, ci și un proxy invers. Următoarele setări vor spune LSWS ce să proxy și unde. În setările virtualhost, deschideți fila Aplicație externă și adăugați o nouă aplicație de tip server Web:

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Indicăm numele și adresa. Puteți specifica un nume arbitrar, dar trebuie să îl amintiți; va fi util în următorii pași. Adresa este locul unde locuiește Nextcloud în rețeaua internă:

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

În aceleași setări virtualhost, deschideți fila Context și creați un nou context de tip Proxy:

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Specificați parametrii: URI = /, server web = nextcloud_1 (nume de la pasul anterior)

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Reporniți LSWS. Acest lucru se face cu un singur clic din interfața web, miracole! (purtătorul ereditar de șoarece din mine vorbește)

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă
Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

  • Instalăm certificatul și configurăm https.
    Procedura de obtinere a certificatului îl vom omite și suntem de acord că îl avem deja și se află împreună cu cheia în directorul /etc/letsencrypt/live/cloud.connect.link.

Să creăm un „ascultător” (Ascultători > Adăugați), numiți-l „https”. Să-l îndreptăm către portul 443 și să observăm că va fi Securizat:

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

În fila SSL, indicați calea către cheie și certificat:

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

„Ascultătorul” a fost creat, acum în secțiunea Virtual Host Mappings vom adăuga gazda noastră virtuală la el:

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Dacă LSWS va trimite proxy doar unui serviciu, configurarea poate fi finalizată. Dar intenționăm să-l folosim pentru a transmite cereri către diferite „autorități”, în funcție de numele domeniului. Și toate domeniile vor avea propriile lor certificate. Prin urmare, trebuie să mergeți la configurația virtualhost și să specificați din nou cheia și certificatul acesteia în fila SSL. În viitor, acest lucru ar trebui făcut pentru fiecare gazdă virtuală nouă.

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Tot ce rămâne este să configurați rescrierea adreselor URL, astfel încât cererile http să fie adresate către https.
(Apropo, când se va termina acest lucru? Este timpul ca browserele și alte programe software să treacă la https în mod implicit și să trimită manual la no-SSL, dacă este necesar).
Activați Activați rescrie și notați regulile de rescrie:

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

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Din cauza unei neînțelegeri ciudate, nu puteți aplica regulile de rescriere folosind repornirea Graceful obișnuită. Prin urmare, să repornim LSWS nu cu grație, ci aproximativ și eficient:

sudo systemctl restart lsws.service

Pentru ca serverul să asculte portul 80, vom crea un alt ascultător. Să-i spunem http, să indicăm cel de-al 80-lea port și faptul că nu va fi sigur:

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Prin analogie cu configurarea unui ascultător https, să mapam gazda noastră virtuală la acesta.

Acum LSWS va asculta portul 80 și va trimite cereri de la acesta la 443, rescriind adresa URL.
În cele din urmă, recomand să scădeți nivelul de înregistrare LSWS, care este setat implicit la Debug. În acest mod, buștenii se înmulțesc cu viteza fulgerului! În majoritatea cazurilor, nivelul de avertizare este suficient. Accesați Configurarea serverului > Jurnal:

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Acest lucru completează configurarea OpenLiteSpeed ​​​​ca proxy invers. Încă o dată repornim LSWS, urmați linkul https://cloud.connect.link si vedem:

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Pentru ca Nextcloud să ne permită accesul, trebuie să adăugăm domeniul cloud.connect.link la lista de încredere. Să edităm config.php. Am instalat Nextcloud automat în timpul instalării. Ubuntu iar configurația se află aici: /var/snap/nextcloud/current/nextcloud/config.
Adăugați parametrul „cloud.connect.link” la cheia trusted_domains:

'trusted_domains' =>
matrice (
0 => '172.16.22.110',
1 => „cloud.connect.link”,
),

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Apoi, în aceeași configurație, trebuie să specificați adresa IP a proxy-ului nostru. Vă rugăm să rețineți că adresa trebuie specificată ca una care este vizibilă pentru serverul Nextcloud, de exemplu. IP interfață locală LSWS. Fără acest pas, interfața web Nextcloud funcționează, dar aplicațiile nu sunt autorizate.

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

Grozav, după aceasta putem ajunge la interfața de autorizare:

Nextcloud în interiorul și în afara OpenLiteSpeed: configurarea proxy inversă

Problema rezolvata! Acum fiecare client poate folosi în siguranță „norul de fișiere” folosind adresa URL personală, serverul cu fișierele este separat de Internet, viitorii clienți vor primi totul la fel și nici o adresă IP suplimentară nu va fi afectată.
În plus, puteți utiliza un proxy invers pentru a furniza conținut static, dar în cazul Nextcloud, acest lucru nu va oferi o creștere vizibilă a vitezei. Deci, acesta este opțional și opțional.

Ma bucur sa impartasesc aceasta poveste, sper sa fie de folos cuiva. Dacă știți metode mai elegante și mai eficiente de rezolvare a acestei probleme, v-aș fi recunoscător pentru comentariile voastre!

Sursa: www.habr.com

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster