Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

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

Iznenađujuće, pretraga na Habréu za OpenLiteSpeed ​​​​ne daje ništa! Žurim ispraviti ovu nepravdu, jer LSWS je pristojan web poslužitelj. Volim ga zbog njegove brzine i otmjenog sučelja web administracije:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

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

Proxy je u redu, ali gdje? U ništa manje divnoj usluzi - Nextcloud. Koristimo Nextcloud za stvaranje privatnih "oblaka za dijeljenje datoteka". Za svakog klijenta dodjeljujemo poseban VM s Nextcloudom i ne želimo ih izlagati "vani". Umjesto toga, proxy zahtjeve vršimo putem uobičajenog obrnutog proxyja. Ovo rješenje omogućuje:
1) uklonite poslužitelj na kojem su pohranjeni klijentski podaci s Interneta i
2) spremiti 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đer ću u ovom članku izostaviti instalaciju i osnovnu konfiguraciju nextclouda, pogotovo jer na Habréu postoje materijali o ovoj temi. Ali svakako ću pokazati postavke, bez kojih Nextcloud neće raditi iza proxyja.

dati:
Nextcloud je instaliran na host 1 i konfiguriran za rad preko http-a (bez SSL-a), ima samo lokalno mrežno sučelje i "sivu" IP adresu 172.16.22.110.
Konfigurirajmo OpenLiteSpeed ​​​​na hostu 2. Ima dva sučelja, vanjsko (gleda na internet) i unutarnje s IP adresom na mreži 172.16.22.0/24
IP adresa vanjskog sučelja glavnog računala 2 je DNS ime cloud.connect.link

cilj:
Preuzmite s interneta putem veze 'https://cloud.connect.link' (SSL) na Nextcloud na internoj mreži.

  • Instaliranje OpenLiteSpeed ​​​​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 ažuriranje

instalirati, pokrenuti:

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

  • Minimalna postavka vatrozida.

    sudo ufw dopustiti ssh
    sudo ufw default dopusti odlazne
    sudo ufw zadano zabrani dolazne
    sudo ufw dopustiti http
    sudo ufw dopustihttps
    sudo ufw dopustiti iz vaš domaćin za upravljanje na bilo koji port 7080
    sudo ufw omogućiti

  • Postavite OpenLiteSpeed ​​​​kao obrnuti proxy.
    Kreirajmo direktorije pod virtualnim hostom.

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

Konfigurirajmo virtualni host iz LSWS web sučelja.
Otvori upravljanje URL-ovima http://cloud.connect.link:7080
Zadana prijava/lozinka: admin/123456

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Dodajte virtualni host (Virtualni hostovi > Dodaj).
Prilikom dodavanja pojavit će se poruka o pogrešci - nedostaje konfiguracijska datoteka. To je normalno, rješava se klikom na Click to create.

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

U kartici Općenito navedite korijen dokumenta (iako nije potreban, konfiguracija se neće pokrenuti bez njega). Naziv domene, ako nije naveden, bit će preuzet iz naziva virtualnog računala, kojemu smo dali ime naše domene.

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Sada je vrijeme da se prisjetimo da nemamo samo web poslužitelj, već i obrnuti proxy. Sljedeće postavke će reći LSWS-u što proxy i gdje. U postavkama virtualhosta otvorite karticu External App i dodajte novu aplikaciju tipa web poslužitelja:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Navedite ime i adresu. Možete navesti proizvoljan naziv, ali ga morate 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 virtualnog hosta otvorite karticu Kontekst i stvorite novi kontekst tipa Proxy:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Odredite parametre: URI = /, Web poslužitelj = nextcloud_1 (naziv iz prethodnog koraka)

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Ponovno pokrenite LSWS. To se radi jednim klikom s web sučelja, čuda! (u meni govori nasljedni nosilac miša)

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

  • Stavili smo certifikat, konfigurirali https.
    Postupak dobivanja certifikata izostavit ćemo ga, složiti se da ga već imamo i lagati s ključem u direktoriju /etc/letsencrypt/live/cloud.connect.link.

Kreirajmo "slušača" (Slušatelji > Dodaj), nazovimo ga "https". Usmjerite ga na priključak 443 i imajte na umu da će biti siguran:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

U kartici SSL navedite put do ključa i certifikata:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

"Slušač" je stvoren, sada ćemo mu u odjeljku Virtual Host Mappings dodati naš virtualni host:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Ako će LSWS biti proxy samo jednoj usluzi, konfiguracija se može dovršiti. Ali planiramo ga koristiti za slanje zahtjeva različitim "instancama" ovisno o nazivu domene. I sve domene će imati svoje certifikate. Stoga morate otići na konfiguraciju virtualnog hosta i ponovno navesti njegov ključ i certifikat u kartici SSL. Ubuduće bi to trebalo učiniti za svaki novi virtualni host.

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Ostaje konfigurirati prepisivanje url-a tako da se http zahtjevi upućuju na https.
(Usput, kada će ovo završiti? Vrijeme je da preglednici i drugi softver prijeđu na https prema zadanim postavkama i ručno proslijede na no-SSL ako je potrebno).
Uključite Omogući prepisivanje i napišite pravila prepisivanja:

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 pravila Rewrite s uobičajenim Graceful ponovnim pokretanjem. Stoga ćemo ponovno pokrenuti LSWS ne graciozno, već nepristojno i učinkovito:

sudo systemctl ponovno pokrenite lsws.service

Kako bi poslužitelj slušao priključak 80, stvorimo još jedan Slušatelj. Nazovimo ga http, odredimo 80. port i da će biti nesiguran:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Po analogiji s postavkom https slušatelja, pridružimo joj naš virtualni host.

Sada će LSWS slušati port 80 i slati zahtjeve na 443 s njega, prepisujući url.
Zaključno, preporučujem snižavanje razine zapisivanja LSWS-a, koja je prema zadanim postavkama postavljena na Debug. U ovom načinu rada, trupci se množe brzinom munje! U većini slučajeva dovoljna je razina upozorenja. Idite na Konfiguracija poslužitelja > Dnevnik:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Ovo dovršava konfiguraciju OpenLiteSpeed ​​​​kao obrnutog proxyja. Ponovno pokrenite LSWS, slijedite vezu https://cloud.connect.link i vidimo:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Da bi nas Nextcloud pustio unutra, moramo dodati domenu cloud.connect.link na popis pouzdanih. Idemo urediti 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 pozornost da adresa mora biti navedena ona koja je vidljiva Nextcloud poslužitelju, tj. IP lokalnog LSWS sučelja. Bez ovog koraka, web sučelje Nextcloud radi, ali aplikacije nisu autorizirane.

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

Super, nakon toga možemo ući u sučelje za autorizaciju:

Nextcloud unutar i izvan OpenLiteSpeeda: postavljanje obrnutog proxyja

Problem riješen! Sada svaki klijent može sigurno koristiti “datotečni oblak” na svom osobnom url-u, poslužitelj s datotekama je odvojen od interneta, budući klijenti će dobiti sve isto i niti jedna dodatna IP adresa neće biti pogođena.
Osim toga, možete koristiti obrnuti proxy za isporuku statičnog sadržaja, ali u slučaju Nextclouda to neće dati zamjetno povećanje brzine. Dakle, neobavezno je i neobvezno.

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

Izvor: www.habr.com

Dodajte komentar