Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

Hvordan setter jeg opp OpenLiteSpeed ​​for å reversere proxy til Nextcloud på det interne nettverket?

Overraskende nok gir ikke et søk på Habré etter OpenLiteSpeed ​​​​noe! Jeg skynder meg å rette opp denne urettferdigheten, fordi LSWS er ​​en anstendig webserver. Jeg elsker det for dets hastighet og fancy webadministrasjonsgrensesnitt:

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

Selv om OpenLiteSpeed ​​​​er mest kjent som en WordPress "akselerator", vil jeg i dagens artikkel vise en ganske spesifikk bruk av den. Nemlig omvendt proxying av forespørsler (omvendt proxy). Du sier at det er mer vanlig å bruke nginx til dette? Jeg er enig. Men det gjør så vondt at vi ble forelsket i LSWS!

Fullmakt er ok, men hvor? I ikke mindre fantastisk tjeneste - Nextcloud. Vi bruker Nextcloud til å lage private «fildelingsskyer». For hver klient tildeler vi en egen VM med Nextcloud, og vi ønsker ikke å eksponere dem "utenfor". I stedet ber vi om fullmakt via en felles omvendt proxy. Denne løsningen tillater:
1) fjern serveren som klientens data er lagret på fra Internett og
2) lagre ip-adresser.

Ordningen ser slik ut:

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

Det er klart at ordningen er forenklet, pga organisering av webtjenesters infrastruktur er ikke tema for dagens artikkel.

Også i denne artikkelen vil jeg utelate installasjonen og grunnleggende konfigurasjonen av nextcloud, spesielt siden Habré har materialer om dette emnet. Men jeg vil definitivt vise innstillingene, uten hvilke Nextcloud ikke vil fungere bak en proxy.

gitt:
Nextcloud er installert på vert 1 og konfigurert til å fungere over http (uten SSL), har kun et lokalt nettverksgrensesnitt og en "grå" IP-adresse 172.16.22.110.
La oss konfigurere OpenLiteSpeed ​​​​på vert 2. Den har to grensesnitt, eksternt (ser ut mot Internett) og internt med en IP-adresse på nettverket 172.16.22.0/24
Host 2s eksterne grensesnitt-IP-adresse er DNS-navnet cloud.connect.link

Mål:
Få fra Internett via lenken 'https://cloud.connect.link' (SSL) til Nextcloud på det interne nettverket.

  • Installere OpenLiteSpeed ​​​​på Ubuntu 18.04.2.

La oss legge til et depot:

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

installer, kjør:

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

  • Minimalt brannmuroppsett.

    sudo ufw tillate ssh
    sudo ufw standard tillate utgående
    sudo ufw standard nekte innkommende
    sudo ufw tillate http
    sudo ufw tillat https
    sudo ufw tillate fra din ledervert til hvilken som helst port 7080
    sudo ufw aktivere

  • La oss konfigurere OpenLiteSpeed ​​​​som en omvendt proxy.
    La oss lage kataloger under virtualhost.

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

La oss konfigurere den virtuelle verten fra LSWS-nettgrensesnittet.
Åpne URL-administrasjon http://cloud.connect.link:7080
Standard pålogging/passord: admin/123456

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

Legg til en virtuell vert (Virtuelle verter > Legg til).
Når du legger til, vises en feilmelding - konfigurasjonsfilen mangler. Dette er normalt, løst ved å klikke Klikk for å opprette.

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

I kategorien Generelt, spesifiser dokumentroten (selv om den ikke er nødvendig, vil ikke konfigurasjonen ta av uten den). Domenenavnet, hvis det ikke er spesifisert, vil bli hentet fra det virtuelle vertsnavnet, som vi kalte domenenavnet vårt.

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

Nå er det på tide å huske at vi ikke bare har en webserver, men en omvendt proxy. Følgende innstillinger vil fortelle LSWS hva som skal proxy og hvor. I virtualhost-innstillingene åpner du Ekstern app-fanen og legger til en ny applikasjon av webservertypen:

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

Angi navn og adresse. Du kan spesifisere et vilkårlig navn, men du må huske det, det vil komme godt med i de neste trinnene. Adressen er den der Nextcloud bor i det interne nettverket:

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

I de samme virtuelle vertsinnstillingene åpner du Kontekst-fanen og oppretter en ny kontekst av Proxy-typen:

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

Spesifiser parameterne: URI = /, Webserver = nextcloud_1 (navn fra forrige trinn)

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

Start LSWS på nytt. Dette gjøres med ett klikk fra nettgrensesnittet, mirakler! (den arvelige musebæreren i meg snakker)

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy
Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

  • Vi installerer sertifikatet og konfigurerer https.
    Prosedyren for å få et sertifikat vi vil utelate det, godta at vi allerede har det og ligge med nøkkelen i katalogen /etc/letsencrypt/live/cloud.connect.link.

La oss lage en "lytter" (lyttere > Legg til), la oss kalle den "https". Pek den til port 443 og merk at den vil være sikker:

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

I SSL-fanen angir du banen til nøkkelen og sertifikatet:

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

"Lytteren" er opprettet, nå vil vi legge til vår virtuelle vert i delen Virtual Host Mappings:

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

Hvis LSWS bare vil gi proxy til én tjeneste, kan konfigurasjonen fullføres. Men vi planlegger å bruke den til å sende forespørsler til forskjellige "instanser" avhengig av domenenavnet. Og alle domener vil ha sine egne sertifikater. Derfor må du gå til virtualhost-konfigurasjonen og spesifisere nøkkelen og sertifikatet igjen i SSL-fanen. I fremtiden bør dette gjøres for hver nye virtuelle vert.

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

Det gjenstår å konfigurere url-omskriving slik at http-forespørsler adresseres til https.
(Forresten, når tar dette slutt? Det er på tide at nettlesere og annen programvare går til https som standard, og videresender til no-SSL manuelt om nødvendig).
Slå på Aktiver omskriving og skriv omskrivingsregler:

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

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

På grunn av en merkelig misforståelse er det umulig å bruke Rewrite-regler med den vanlige Graceful-omstarten. Derfor vil vi starte LSWS på nytt, ikke grasiøst, men frekt og effektivt:

sudo systemctl start lsws.service på nytt

For å få serveren til å lytte til port 80, la oss lage en annen lytter. La oss kalle det http, spesifisere den 80. porten og at den vil være usikret:

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

I analogi med https-lytterinnstillingen, la oss knytte vår virtuelle vert til den.

Nå vil LSWS lytte til port 80 og sende forespørsler fra den til 443, og skrive om url.
Avslutningsvis anbefaler jeg å senke LSWS-loggingsnivået, som er satt til Debug som standard. I denne modusen formerer loggene seg med lynets hastighet! I de fleste tilfeller er advarselsnivået tilstrekkelig. Gå til Serverkonfigurasjon > Logg:

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

Dette fullfører konfigurasjonen av OpenLiteSpeed ​​​​som en omvendt proxy. Nok en gang, start LSWS på nytt, følg lenken https://cloud.connect.link og se:

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

For at Nextcloud skal slippe oss inn, må vi legge til cloud.connect.link-domenet til den klarerte listen. La oss redigere config.php. Jeg installerte Nextcloud automatisk når jeg installerte Ubuntu, og konfigurasjonen ligger her: /var/snap/nextcloud/current/nextcloud/config.
Legg til «cloud.connect.link»-parameteren til Trusted_domains-nøkkelen:

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

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

Deretter må du spesifisere IP-adressen til proxyen vår i samme konfigurasjon. Vær oppmerksom på at adressen må angis som en som er synlig for Nextcloud-serveren, dvs. LSWS lokalt grensesnitt IP. Uten dette trinnet fungerer Nextcloud-nettgrensesnittet, men applikasjoner er ikke autorisert.

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

Flott, etter det kan vi komme inn i autorisasjonsgrensesnittet:

Nextcloud i og utenfor OpenLiteSpeed: sette opp omvendt proxy

Problem løst! Nå kan hver klient trygt bruke "filskyen" på sin egen personlige url, serveren med filer er atskilt fra Internett, fremtidige klienter vil motta alt det samme og ikke en eneste ekstra IP-adresse vil bli påvirket.
I tillegg kan du bruke en omvendt proxy for å levere statisk innhold, men i tilfelle av Nextcloud vil ikke dette gi en merkbar økning i hastighet. Så det er valgfritt og valgfritt.

Jeg er glad for å dele denne historien, jeg håper den vil være nyttig for noen. Hvis du vet mer elegante og effektive metoder for å løse problemet, vil jeg være takknemlig for kommentarene!

Kilde: www.habr.com

Legg til en kommentar