Hogyan állítsuk be az OpenLiteSpeed-et a Nextcloud fordított proxyzásához, amely a belső hálózaton található?
Meglepő, de a Habr-nál az OpenLiteSpeed keresése semmit sem ad! Sietek, hogy helyrehozzam ezt a törvénysértést, hiszen az LSWS egy méltó webkiszolgáló. Azért szeretem, mert gyors, és van egy divatos adminisztrációs webfelülete:

Bár az OpenLiteSpeed leginkább mint a WordPress ‘gyorsítója’ ismert, a mai cikkben egy viszonylag különleges felhasználását fogom bemutatni. Nevezetesen a kérések fordított proxyzását. Mondhatja, hogy ehhez az nginx a megszokottabb? Egyetértek. De túl sokat megszerettük az LSWS-t!
Proxyzás rendben, de hová? Egy legalább annyira nagyszerű szolgáltatásra – Nextcloud-ra. A Nextcloud-ot használjuk privát „fájlmegosztó felhők” létrehozására. Minden ügyfél számára külön VM-et osztunk ki Nextcloud-dal, és nem akarjuk őket „kifelé” kitenni. Ehelyett egy közös fordított proxy-n keresztül proxyzzuk a kéréseket. Ez a megoldás lehetővé teszi:
1) a kliens adatait tároló szerver eltávolítását az internetről, és
2) az IP-címek megtakarítását.
A séma így néz ki:

Nyilvánvaló, hogy a séma egyszerűsített, mivel a webszolgáltatások infrastruktúrájának megszervezése – nem a mai cikk témája.
Ezen a cikken belül a Nextcloud telepítését és alapbeállítását is átugrom, hiszen a Habr-on vannak ezzel kapcsolatos anyagok. De mindenképpen bemutatom azokat a beállításokat, amelyek nélkül a Nextcloud nem fog működni a proxy mögött.
Adott:
A Nextcloud telepítve van az 1. hoszton, és http-n (SSL nélkül) működik, csak helyi hálózati interfésze van, és a ‘szürke’ IP címe 172.16.22.110.
Az OpenLiteSpeed-et a 2. hoszton állítjuk be. Két interfésze van, egy külső (internetre néz) és egy belső, IP címe a 172.16.22.0/24 hálózaton.
A 2. hoszó külső interfészének IP címe a cloud.connect.link DNS névhez vezet.
Feladat:
Az interneten keresztül a ‘‘ (SSL) linkre jutni a Nextcloud-ra a belső hálózaton.
- Az OpenLiteSpeed telepítése Ubuntu 18.04.2-re.
Adjunk hozzá egy tárolót:
wget -O — |sudo bash
sudo apt-get update
installáljuk, indítjuk:
sudo apt-get install openlitespeed
sudo /usr/local/lsws/bin/lswsctrl start
- Minimumra beállítjuk a tűzfalat.
sudo ufw allow ssh
sudo ufw default allow outgoing
sudo ufw default deny incoming
sudo ufw allow http
sudo ufw allow https
sudo ufw allow from az Ön vezérlő hostja to any port 7080
sudo ufw enable - Állítsuk be az OpenLiteSpeed-et mint fordított proxy.
Hozzunk létre könyvtárakat a virtuális hoszthoz.cd /usr/local/lsws/
sudo mkdir cloud.connect.link
cd cloud.connect.link/
sudo mkdir {conf,html,logs}
sudo chown lsadm:lsadm ./conf/
Állítsuk be a virtuális hosztot az LSWS webfelületén.
Nyissuk meg a menedzsment URL-t.
Alapértelmezett felhasználónév/jelszó: admin/123456

Virtuális host hozzáadása (Virtual Hosts > Add).
Hozzáadáskor hibaüzenet érkezik a konfigurációs fájl hiányáról. Ez normális, az Click to create gomb megnyomásával megoldható.

A General fülön megadjuk a Document Root-ot (bár nem lesz szükség rá, nélküle a konfiguráció nem fog működni). A Domain Name, ha nem adjuk meg, a Virtual Host Name-ből lesz átvéve, amelyet a domainnevének neveztünk el.

Most emlékeztetnünk kell arra, hogy nem csak egy webszerverünk van, hanem egy reverse proxy. A következő beállítások jelzik az LSWS-nek, hogy mit és hová kell proxyzni. A virtuális host beállításainál nyisd meg az External App fület és adj hozzá egy új alkalmazást Web server típusban:

Add meg a nevet és a címet. A név lehet tetszőleges, de meg kell jegyezni, mert szükség lesz rá a következő lépésekben. A cím az, ahol a Nextcloud a belső hálózaton található:

Ugyanezen virtuális host beállításainál nyisd meg a Context fület és hozz létre egy új Proxy típusú kontextust:

Add meg a következő paramétereket: URI = /, Web server = nextcloud_1 (az előző lépésből származó név)

Indítsd újra az LSWS-t. Ezt egyetlen kattintással megteheted a webes felületen, csoda! (az utódos egérfejlesztő beszél belőlem)


- Telepítsd a tanúsítványt, állítsd be a https-t.
kihagyjuk, mondjuk, hogy már van nekünk, és a kulccsal együtt az /etc/letsencrypt/live/cloud.connect.link könyvtárban található.
Hozzunk létre egy "hallgatót" (Listeners > Add), nevezzük el "https"-ra. Állítsuk a 443-as portra, és jelöljük meg, hogy Secure lesz:

Az SSL fülön add meg a kulcs és a tanúsítvány elérési útját:

A "hallgató" létrejött, most a Virtual Host Mappings részben adjuk hozzá a virtuális hostunkat:

Ha az LSWS csak egy szolgáltatásra fog proxyzni, akkor a beállítást befejezhetjük. De azt tervezzük, hogy a domain név függvényében különböző "instanciákba" fogja továbbítani a kéréseket. Minden domainhez saját tanúsítványok tartoznak. Ezért meg kell nyitni a virtuális host konfigurációját és ismét meg kell adni az SSL fülön a kulcsát és a tanúsítványát. A jövőben ezt minden új virtuális host esetén meg kell tenni.

Már csak az URL átírást kell beállítani, hogy a http kérések https-re legyenek irányítva.
(Egyébként, mikor ér már véget ez? Itt az ideje, hogy a böngészők és a többi szoftver alapértelmezés szerint https-en működjön, a no-SSL átirányítást pedig manuálisan végezzük el, ha szükséges.)
Kapcsoljuk be az Enable Rewrite-t és írjuk be az Átírási Szabályokat:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ } [R=301,L]

A Rewrite rules alkalmazása a szokásos Graceful restart tévesen nem lehetséges. Ezért az LSWS-t durván, de hatékonyan indítjuk újra:
sudo systemctl restart lsws.service
Ahhoz, hogy a szerver a 80-as portot is figyelje, hozzunk létre még egy Listener-t. Nevezzük el http-nak, állítsuk be a 80-as portot, és jelöljük meg, hogy az nem biztonságos:

A https listener beállításához hasonlóan csatlakoztatjuk a virtuális hostunkhoz.
Most az LSWS a 80-as portot figyeli, és a kéréseket a 443-ra irányítja, újraírással a URL-t.
Végezetül ajánlom, hogy csökkentsük az LSWS naplózási szintjét, amely alapértelmezetten Debug-ként van beállítva. Ebben a módban a naplók villámgyorsan megsokszorozódnak! A legtöbb esetben a Warning szint elegendő. Menjünk a Szerver konfiguráció > Napló:

Ezzel befejeződik az OpenLiteSpeed beállítása visszafelé proxyként. Ismét újraindítjuk az LSWS-t, majd rákattintunk a linkre és azt látjuk:

Ahhoz, hogy a Nextcloud engedélyezzen minket, a cloud.connect.link domain-t a megbízható domainek közé kell felvenni. Frissítsük a config.php-t. A Nextcloud-ot automatikusan telepítettem az Ubuntu telepítésekor, és a konfiguráció itt található: /var/snap/nextcloud/current/nextcloud/config.
A trusted_domains kulcs alatt hozzáadjuk a ‘cloud.connect.link’ paramétert:
‘trusted_domains’ =>
array (
0 => ‘172.16.22.110’,
1 => ‘cloud.connect.link’,
),

Ezután a konfigurációban jelezni kell a proxy IP-címét. Felhívom a figyelmet arra, hogy azt az IP-címet kell megadni, amely a Nextcloud szerver számára látható, tehát az LSWS helyi interfészének IP-címe. E lépés nélkül a Nextcloud webes felülete működik, de az alkalmazások nem fognak hitelesülni.
‘trusted_proxies’ =>
array (
0 => ‘172.16.22.100’,
),
Remek, ezután beléphetünk a bejelentkezési felületre:

A feladat megoldva! Most minden ügyfél biztonságosan használhatja a ‘fájlok felhőjét’ a saját személyre szabott URL-jén, a fájlokat tartalmazó szerver leválasztva az internetről, a jövőbeli ügyfelek ugyanezt megkapják, és egyetlen további IP-cím sem sérül.
Továbbá, a statikus tartalom kiszolgálásához használható a reverse proxy, de a Nextcloud esetében ez nem fog észlelhető sebességnövekedést hozni. Tehát ez opcionális és szabad akaraton múlik.
Örömmel osztom meg ezt a történetet, remélem valakinek hasznos lesz. Ha tud egy elegánsabb és hatékonyabb módszert a feladat megoldására – hálás lennék a megjegyzésekért!
Forrás: habr.com
