Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Kako da podesim OpenLiteSpeed ​​da preokrene proxy na Nextcloud na internoj mreži?

Iznenađujuće, pretraga na Habré-u za OpenLiteSpeed ​​ne daje ništa! Žurim da ispravim ovu nepravdu, jer je LSWS pristojan web server. Volim ga zbog njegove brzine i otmjenog interfejsa za web administraciju:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Iako je OpenLiteSpeed ​​najpoznatiji kao WordPress "akcelerator", u današnjem članku ću pokazati njegovu prilično specifičnu upotrebu. Naime, obrnuto proxyiranje zahtjeva (reverse proxy). Kažete da je češće koristiti nginx za ovo? složit ću se. Ali toliko boli da smo se zaljubili u LSWS!

Proksiranje je ok, ali gdje? U ništa manje divnoj usluzi - Nextcloud. Koristimo Nextcloud za kreiranje privatnih oblaka za dijeljenje datoteka. Za svakog klijenta dodjeljujemo zasebnu VM s Nextcloudom i ne želimo da ih izlažemo „spolja“. Umjesto toga, mi proxy zahtjeve putem zajedničkog obrnutog proxyja. Ovo rješenje omogućava:
1) uklonite server na kojem se pohranjuju podaci o klijentu sa Interneta i
2) sačuvati ip-adrese.

Dijagram izgleda ovako:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Jasno je da je shema pojednostavljena, jer organizacija infrastrukture web servisa nije tema današnjeg članka.

Takođe u ovom članku ću izostaviti instalaciju i osnovnu konfiguraciju nextclouda, pogotovo jer Habré ima materijale na ovu temu. Ali svakako ću pokazati postavke bez kojih Nextcloud neće raditi iza proxyja.

S obzirom:
Nextcloud je instaliran na hostu 1 i konfiguriran za rad preko http (bez SSL-a), ima samo sučelje lokalne mreže i "sivu" IP adresu 172.16.22.110.
Konfigurišite OpenLiteSpeed ​​na hostu 2. Ima dva interfejsa, eksterno (izgleda na Internet) i interno sa IP adresom na mreži 172.16.22.0/24
IP adresa eksternog interfejsa hosta 2 je DNS ime cloud.connect.link

Zadatak:
Preuzmite sa interneta putem linka 'https://cloud.connect.link' (SSL) na Nextcloud na internoj mreži.

  • Instaliranje OpenLiteSpeed-a na Ubuntu 18.04.2.

Dodajmo spremište:

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

instaliraj, pokreni:

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

  • Minimalno postavljanje zaštitnog zida.

    sudo ufw dozvoli ssh
    sudo ufw default dozvoljava odlazni
    sudo ufw default deny dolazni
    sudo ufw omogućiti http
    sudo ufw dozvoli https
    sudo ufw dozvoli iz vaš upravljački host na bilo koji port 7080
    sudo ufw omogućiti

  • Postavite OpenLiteSpeed ​​kao obrnuti proxy.
    Kreirajmo direktorije pod virtualhostom.

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

Konfigurirajmo virtuelni host iz LSWS web sučelja.
Otvorite upravljanje urlovima http://cloud.connect.link:7080
Zadana prijava/lozinka: admin/123456

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Dodajte virtuelni host (Virtualni domaćini > Dodaj).
Prilikom dodavanja pojavit će se poruka o grešci - nedostaje konfiguracijski fajl. Ovo je normalno, rješava se klikom na Click to create.

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Na kartici Općenito navedite korijen dokumenta (iako nije potreban, konfiguracija se neće pokrenuti bez njega). Ime domene, ako nije navedeno, biće preuzeto iz imena virtuelnog hosta, koje smo nazvali našim imenom domene.

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Sada je vrijeme da se prisjetimo da nemamo samo web server, već i obrnuti proxy. Sljedeće postavke će reći LSWS-u šta da proxy i gdje. U postavkama virtuelnog hosta otvorite karticu Eksterna aplikacija i dodajte novu aplikaciju tipa web servera:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Navedite ime i adresu. Možete odrediti proizvoljno ime, ali morate ga zapamtiti, dobro će vam doći u sljedećim koracima. Adresa je ona na kojoj Nextcloud živi u internoj mreži:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

U istim postavkama virtuelnog hosta, otvorite karticu Kontekst i kreirajte novi kontekst tipa Proxy:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Odredite parametre: URI = /, Web server = nextcloud_1 (ime iz prethodnog koraka)

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Ponovo pokrenite LSWS. Ovo se radi jednim klikom sa web interfejsa, čuda! (u meni govori nasljedni miš-nosac)

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja
Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

  • Stavljamo sertifikat, konfigurišemo https.
    Procedura za dobijanje sertifikata izostavićemo ga, slažemo se da ga već imamo i ležimo sa ključem u /etc/letsencrypt/live/cloud.connect.link direktorijumu.

Kreirajmo "slušatelja" (Listeners > Add), nazovimo ga "https". Usmjerite ga na port 443 i imajte na umu da će biti siguran:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Na kartici SSL navedite putanju do ključa i certifikata:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

“Slušalac” je kreiran, sada ćemo mu u odjeljku Mapiranja virtualnog hosta dodati naš virtualni host:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Ako LSWS koristi samo jednu uslugu, konfiguracija se može dovršiti. Ali planiramo ga koristiti za slanje zahtjeva na različite "instance" ovisno o nazivu domene. I sve domene će imati svoje certifikate. Stoga morate otići na konfiguraciju virtualnog hosta i ponovo navesti njegov ključ i certifikat na kartici SSL. U budućnosti bi to trebalo da se radi za svaki novi virtuelni host.

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Ostaje da se konfiguriše prepisivanje url-a tako da se http zahtjevi adresiraju na https.
(Usput, kada će se ovo završiti? Vrijeme je da pretraživači i drugi softver po defaultu odu na https, a ako je potrebno, ručno proslijede na no-SSL).
Uključite Enable Rewrite i napišite Rewrite Rules:

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

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Zbog čudnog nesporazuma, nemoguće je primijeniti Rewrite pravila uz uobičajeno Graceful restart. Stoga ćemo ponovo pokrenuti LSWS ne graciozno, već grubo i efikasno:

sudo systemctl restart lsws.service

Da bi server slušao port 80, napravimo drugi slušalac. Nazovimo ga http, navedite 80. port i da neće biti bezbedan:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Po analogiji sa https postavkom slušaoca, priključimo mu naš virtuelni host.

Sada će LSWS slušati na portu 80 i slati zahtjeve na 443 sa njega, prepisujući url.
U zaključku, preporučujem snižavanje nivoa LSWS evidentiranja, koji je po defaultu postavljen na Debug. U ovom načinu rada, trupci se množe brzinom munje! U većini slučajeva dovoljan je nivo upozorenja. Idite na Konfiguracija servera > Dnevnik:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Ovo dovršava konfiguraciju OpenLiteSpeeda kao obrnutog proxyja. Još jednom, ponovo pokrenite LSWS, pratite vezu https://cloud.connect.link i vidimo:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Da bi nas Nextcloud pustio unutra, moramo dodati domen cloud.connect.link na pouzdanu listu. Idemo uređivati ​​config.php. Automatski sam instalirao Nextcloud prilikom instaliranja Ubuntua i konfiguracija se nalazi ovdje: /var/snap/nextcloud/current/nextcloud/config.
Dodajte parametar 'cloud.connect.link' ključu trusted_domains:

'trusted_domains' =>
niz (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Nadalje, u istoj konfiguraciji morate navesti IP adresu našeg proxyja. Skrećem vam pažnju da adresa mora biti navedena ona koja je vidljiva Nextcloud serveru, tj. IP lokalnog LSWS sučelja. Bez ovog koraka, Nextcloud web sučelje radi, ali aplikacije nisu ovlaštene.

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

Odlično, nakon toga možemo ući u autorizacijski interfejs:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Problem riješen! Sada svaki klijent može bezbedno da koristi „oblak fajlova“ na svom ličnom URL-u, server sa fajlovima je odvojen od interneta, budući klijenti će primati sve isto i to neće uticati ni na jednu dodatnu IP adresu.
Dodatno, možete koristiti obrnuti proxy za isporuku statičkog sadržaja, ali u slučaju Nextclouda, to neće dati primjetno povećanje brzine. Dakle, to je opciono i opciono.

Drago mi je da podijelim ovu priču, nadam se da će nekome biti od koristi. Ako znate elegantnije i efikasnije metode za rješavanje problema, bit ću vam zahvalan na komentarima!

izvor: www.habr.com

Dodajte komentar