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:
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:
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.
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
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.
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.
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:
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:
I de samme virtuelle vertsinnstillingene åpner du Kontekst-fanen og oppretter en ny kontekst av Proxy-typen:
Spesifiser parameterne: URI = /, Webserver = nextcloud_1 (navn fra forrige trinn)
Start LSWS på nytt. Dette gjøres med ett klikk fra nettgrensesnittet, mirakler! (den arvelige musebæreren i meg snakker)
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:
I SSL-fanen angir du banen til nøkkelen og sertifikatet:
"Lytteren" er opprettet, nå vil vi legge til vår virtuelle vert i delen Virtual Host Mappings:
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.
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:
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:
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:
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:
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:
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.
Flott, etter det kan vi komme inn i autorisasjonsgrensesnittet:
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!