Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси
Како да поставам OpenLiteSpeed за да го врати проксито на Nextcloud на внатрешната мрежа?
Изненадувачки, пребарувањето на Habré за OpenLiteSpeed не дава ништо! Побрзам да ја исправам оваа неправда, бидејќи LSWS е пристоен веб-сервер. Го сакам поради неговата брзина и фенси интерфејс за веб-администрација:
Иако OpenLiteSpeed е најпознат како „акцелератор“ на WordPress, во денешната статија ќе покажам прилично специфична употреба на него. Имено, обратно прокси на барањата (reverse proxy). Велиш дека е повообичаено да се користи nginx за ова? ќе се согласам. Но, толку многу боли што се заљубивме во LSWS!
Прокси е во ред, но каде? Во не помалку прекрасна услуга - Nextcloud. Ние користиме Nextcloud за да создадеме приватни „облаци за споделување датотеки“. За секој клиент, доделуваме посебно VM со Nextcloud и не сакаме да ги изложуваме „надвор“. Наместо тоа, ние бараме прокси преку заеднички обратен прокси. Ова решение овозможува:
1) отстранете го серверот на кој се зачувани податоците на клиентот од Интернет и
2) зачувајте ip-адреси.
Дијаграмот изгледа вака:
Јасно е дека шемата е поедноставена, бидејќи организација на инфраструктура на веб сервиси не е тема на денешната статија.
Исто така, во оваа статија ќе ја испуштам инсталацијата и основната конфигурација на следниот облак, особено затоа што Хабре има материјали на оваа тема. Но, дефинитивно ќе ги покажам поставките, без кои Nextcloud нема да работи зад прокси.
Со оглед:
Nextcloud е инсталиран на домаќинот 1 и конфигуриран да работи преку http (без SSL), има само локален мрежен интерфејс и „сива“ IP адреса 172.16.22.110.
Ајде да го конфигурираме OpenLiteSpeed на домаќин 2. Има два интерфејси, надворешен (изгледа на Интернет) и внатрешен со IP адреса на мрежата 172.16.22.0/24
IP адресата на надворешниот интерфејс на домаќинот 2 е име на DNS cloud.connect.link
Задача:
Добијте од Интернет преку врската 'https://cloud.connect.link' (SSL) до Nextcloud на внатрешната мрежа.
sudo ufw дозволи сш
sudo ufw стандардно дозволува појдовни
sudo ufw стандардно одбивање дојдовен
sudo ufw дозволи http
sudo ufw дозволува https
sudo ufw дозволи од вашиот менаџмент домаќин на која било порта 7080
судо ufw овозможи
Поставете OpenLiteSpeed како обратен прокси.
Ајде да креираме директориуми под виртуелниот домаќин.
cd /usr/local/lsws/
sudo mkdirc облак.поврзи.врска
cd cloud.connect.link/
sudo mkdir {conf, html, дневници}
судо чаун lsadm:lsadm ./conf/
Ајде да го конфигурираме виртуелниот домаќин од веб-интерфејсот LSWS.
Отворете го управувањето со УРЛ http://cloud.connect.link:7080
Стандардно најавување/лозинка: admin/123456
Додадете виртуелен домаќин (Виртуелни домаќини > Додај).
Кога додавате, ќе се појави порака за грешка - конфигурациската датотека недостасува. Ова е нормално, се решава со кликнување на Кликнете за креирање.
Во табулаторот Општо, наведете го коренот на документот (иако не е потребен, конфигурацијата нема да се исклучи без него). Името на доменот, ако не е одредено, ќе биде преземено од името на виртуелниот домаќин, кое го именувавме на нашето име на домен.
Сега е време да се потсетиме дека немаме само веб-сервер, туку обратен прокси. Следните поставки ќе му кажат на LSWS што да прокси и каде. Во поставките за виртуелен домаќин, отворете го табот Надворешна апликација и додајте нова апликација од типот на веб-сервер:
Наведете го името и адресата. Можете да наведете произволно име, но треба да го запомните, тоа ќе ви се најде во следните чекори. Адресата е онаа каде што Nextcloud живее во внатрешната мрежа:
Во истите поставки за виртуелен домаќин, отворете го табот Контекст и креирајте нов контекст од типот на прокси:
Наведете ги параметрите: URI = /, Веб-сервер = nextcloud_1 (име од претходниот чекор)
Рестартирајте го LSWS. Ова се прави со еден клик од веб-интерфејсот, чуда! (во мене зборува наследен носач на глушец)
Го ставаме сертификатот, конфигурираме https. Постапката за добивање на сертификат ќе го испуштиме, ќе се согласиме дека веќе го имаме и ќе лежиме со клучот во директориумот /etc/letsencrypt/live/cloud.connect.link.
Ајде да создадеме „слушател“ (Listeners > Add), да го наречеме „https“. Насочете го на портата 443 и забележете дека ќе биде безбеден:
Во табулаторот SSL, наведете ја патеката до клучот и сертификатот:
„Слушателот“ е создаден, сега во делот за мапирање на виртуелен домаќин ќе го додадеме нашиот виртуелен домаќин на него:
Ако LSWS ќе биде прокси само на една услуга, конфигурацијата може да се заврши. Но, планираме да го користиме за испраќање барања до различни „инстанци“ во зависност од името на доменот. И сите домени ќе имаат свои сертификати. Затоа, треба да отидете на конфигурацијата на виртуелниот хост и повторно да го наведете неговиот клуч и сертификат во табулаторот SSL. Во иднина, ова треба да се направи за секој нов виртуелен хост.
Останува да се конфигурира препишувањето на URL-то така што барањата за http се адресираат на https. (Патем, кога ќе заврши ова?
Вклучете Овозможи препишување и напишете правила за препишување:
Поради чудно недоразбирање, невозможно е да се применат правилата за Rewrite со вообичаениот Graceful рестарт. Затоа, ќе го рестартираме LSWS не благодатно, туку грубо и ефикасно:
sudo systemctl рестартирајте го lsws.service
За да го натераме серверот да ја слуша портата 80, ајде да создадеме друг слушател. Да го наречеме http, наведете ја 80-тата порта и дека ќе биде небезбедна:
По аналогија со поставката за слушател https, да го прикачиме нашиот виртуелен домаќин на него.
Сега LSWS ќе слуша на портата 80 и ќе испраќа барања до 443 од неа, препишувајќи го URL-то.
Како заклучок, препорачувам да го намалите нивото на евиденција на LSWS, кое стандардно е поставено на Debug. Во овој режим, трупците се множат со молскавична брзина! За повеќето случаи, нивото на предупредување е доволно. Одете во Конфигурација на серверот > Дневник:
Ова ја комплетира конфигурацијата на OpenLiteSpeed како обратен прокси. Уште еднаш, рестартирајте го LSWS, следете ја врската https://cloud.connect.link и види:
За да може Nextcloud да ни дозволи да влеземе, треба да го додадеме доменот cloud.connect.link на доверливата листа. Ајде да го уредиме config.php. Го инсталирав Nextcloud автоматски кога го инсталирав Ubuntu и конфигурацијата се наоѓа овде: /var/snap/nextcloud/current/nextcloud/config.
Додајте го параметарот „cloud.connect.link“ на клучот trusted_domains:
Понатаму, во истата конфигурација, мора да ја наведете IP адресата на нашиот прокси. Вашето внимание го обрнувам на фактот дека адресата мора да биде наведена онаа што е видлива за серверот Nextcloud, т.е. IP на локалниот LSWS интерфејс. Без овој чекор, веб-интерфејсот Nextcloud работи, но апликациите не се овластени.
'trusted_proxies' =>
низа (
0 => '172.16.22.100',
),
Одлично, после тоа можеме да влеземе во интерфејсот за овластување:
Проблемот е решен! Сега секој клиент може безбедно да го користи „облакот за датотеки“ на сопствената лична URL адреса, серверот со датотеки е одделен од Интернет, идните клиенти ќе добијат сè исто и нема да биде засегната ниту една дополнителна IP адреса.
Дополнително, можете да користите обратен прокси за да испорачате статична содржина, но во случајот со Nextcloud, тоа нема да даде забележително зголемување на брзината. Значи, тоа е опционално и опционално.
Мило ми е што ја споделувам оваа приказна, се надевам дека некому ќе му биде од корист. Ако знаете поелегантни и поефикасни методи за решавање на проблемот, ќе ви бидам благодарен за коментарите!