Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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:

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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:

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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 ‘https://cloud.connect.link‘ (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 — http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh |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. http://cloud.connect.link:7080
Alapértelmezett felhasználónév/jelszó: admin/123456

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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ó.

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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.

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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:

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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ó:

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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:

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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)

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást
Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

  • Telepítsd a tanúsítványt, állítsd be a https-t.
    A tanúsítvány megszerzésének eljárásá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:

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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.

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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 ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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:

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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ó:

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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’,
),

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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:

Nextcloud belül, kívül OpenLiteSpeed: állítsuk be a fordított proxyzást

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

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster