Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Како да поставам OpenLiteSpeed ​​за да го врати проксито на Nextcloud на внатрешната мрежа?

Изненадувачки, пребарувањето на Habré за OpenLiteSpeed ​​не дава ништо! Побрзам да ја исправам оваа неправда, бидејќи LSWS е пристоен веб-сервер. Го сакам поради неговата брзина и фенси интерфејс за веб-администрација:

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Иако OpenLiteSpeed ​​е најпознат како „акцелератор“ на WordPress, во денешната статија ќе покажам прилично специфична употреба на него. Имено, обратно прокси на барањата (reverse proxy). Велиш дека е повообичаено да се користи nginx за ова? ќе се согласам. Но, толку многу боли што се заљубивме во LSWS!

Прокси е во ред, но каде? Во не помалку прекрасна услуга - Nextcloud. Ние користиме Nextcloud за да создадеме приватни „облаци за споделување датотеки“. За секој клиент, доделуваме посебно VM со Nextcloud и не сакаме да ги изложуваме „надвор“. Наместо тоа, ние бараме прокси преку заеднички обратен прокси. Ова решение овозможува:
1) отстранете го серверот на кој се зачувани податоците на клиентот од Интернет и
2) зачувајте ip-адреси.

Дијаграмот изгледа вака:

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Јасно е дека шемата е поедноставена, бидејќи организација на инфраструктура на веб сервиси не е тема на денешната статија.

Исто така, во оваа статија ќе ја испуштам инсталацијата и основната конфигурација на следниот облак, особено затоа што Хабре има материјали на оваа тема. Но, дефинитивно ќе ги покажам поставките, без кои 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 на внатрешната мрежа.

  • Инсталирање OpenLiteSpeed ​​на Ubuntu 18.04.2.

Ајде да додадеме складиште:

wget -O http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh |судо баш
sudo apt-get update

инсталирај, стартувај:

sudo apt-get install openlitespeed
почеток sudo /usr/local/lsws/bin/lswsctrl

  • Минимално поставување на заштитен ѕид.

    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

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Додадете виртуелен домаќин (Виртуелни домаќини > Додај).
Кога додавате, ќе се појави порака за грешка - конфигурациската датотека недостасува. Ова е нормално, се решава со кликнување на Кликнете за креирање.

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Во табулаторот Општо, наведете го коренот на документот (иако не е потребен, конфигурацијата нема да се исклучи без него). Името на доменот, ако не е одредено, ќе биде преземено од името на виртуелниот домаќин, кое го именувавме на нашето име на домен.

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Сега е време да се потсетиме дека немаме само веб-сервер, туку обратен прокси. Следните поставки ќе му кажат на LSWS што да прокси и каде. Во поставките за виртуелен домаќин, отворете го табот Надворешна апликација и додајте нова апликација од типот на веб-сервер:

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Наведете го името и адресата. Можете да наведете произволно име, но треба да го запомните, тоа ќе ви се најде во следните чекори. Адресата е онаа каде што Nextcloud живее во внатрешната мрежа:

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Во истите поставки за виртуелен домаќин, отворете го табот Контекст и креирајте нов контекст од типот на прокси:

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Наведете ги параметрите: URI = /, Веб-сервер = nextcloud_1 (име од претходниот чекор)

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Рестартирајте го LSWS. Ова се прави со еден клик од веб-интерфејсот, чуда! (во мене зборува наследен носач на глушец)

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси
Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

  • Го ставаме сертификатот, конфигурираме https.
    Постапката за добивање на сертификат ќе го испуштиме, ќе се согласиме дека веќе го имаме и ќе лежиме со клучот во директориумот /etc/letsencrypt/live/cloud.connect.link.

Ајде да создадеме „слушател“ (Listeners > Add), да го наречеме „https“. Насочете го на портата 443 и забележете дека ќе биде безбеден:

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Во табулаторот SSL, наведете ја патеката до клучот и сертификатот:

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

„Слушателот“ е создаден, сега во делот за мапирање на виртуелен домаќин ќе го додадеме нашиот виртуелен домаќин на него:

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Ако LSWS ќе биде прокси само на една услуга, конфигурацијата може да се заврши. Но, планираме да го користиме за испраќање барања до различни „инстанци“ во зависност од името на доменот. И сите домени ќе имаат свои сертификати. Затоа, треба да отидете на конфигурацијата на виртуелниот хост и повторно да го наведете неговиот клуч и сертификат во табулаторот SSL. Во иднина, ова треба да се направи за секој нов виртуелен хост.

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Останува да се конфигурира препишувањето на URL-то така што барањата за http се адресираат на https.
(Патем, кога ќе заврши ова?
Вклучете Овозможи препишување и напишете правила за препишување:

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

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Поради чудно недоразбирање, невозможно е да се применат правилата за Rewrite со вообичаениот Graceful рестарт. Затоа, ќе го рестартираме LSWS не благодатно, туку грубо и ефикасно:

sudo systemctl рестартирајте го lsws.service

За да го натераме серверот да ја слуша портата 80, ајде да создадеме друг слушател. Да го наречеме http, наведете ја 80-тата порта и дека ќе биде небезбедна:

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

По аналогија со поставката за слушател https, да го прикачиме нашиот виртуелен домаќин на него.

Сега LSWS ќе слуша на портата 80 и ќе испраќа барања до 443 од неа, препишувајќи го URL-то.
Како заклучок, препорачувам да го намалите нивото на евиденција на LSWS, кое стандардно е поставено на Debug. Во овој режим, трупците се множат со молскавична брзина! За повеќето случаи, нивото на предупредување е доволно. Одете во Конфигурација на серверот > Дневник:

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Ова ја комплетира конфигурацијата на OpenLiteSpeed ​​како обратен прокси. Уште еднаш, рестартирајте го LSWS, следете ја врската https://cloud.connect.link и види:

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

За да може Nextcloud да ни дозволи да влеземе, треба да го додадеме доменот cloud.connect.link на доверливата листа. Ајде да го уредиме config.php. Го инсталирав Nextcloud автоматски кога го инсталирав Ubuntu и конфигурацијата се наоѓа овде: /var/snap/nextcloud/current/nextcloud/config.
Додајте го параметарот „cloud.connect.link“ на клучот trusted_domains:

'trusted_domains' =>
низа (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Понатаму, во истата конфигурација, мора да ја наведете IP адресата на нашиот прокси. Вашето внимание го обрнувам на фактот дека адресата мора да биде наведена онаа што е видлива за серверот Nextcloud, т.е. IP на локалниот LSWS интерфејс. Без овој чекор, веб-интерфејсот Nextcloud работи, но апликациите не се овластени.

'trusted_proxies' =>
низа (
0 => '172.16.22.100',
),

Одлично, после тоа можеме да влеземе во интерфејсот за овластување:

Nextcloud внатре и надвор од OpenLiteSpeed: поставување обратно прокси

Проблемот е решен! Сега секој клиент може безбедно да го користи „облакот за датотеки“ на сопствената лична URL адреса, серверот со датотеки е одделен од Интернет, идните клиенти ќе добијат сè исто и нема да биде засегната ниту една дополнителна IP адреса.
Дополнително, можете да користите обратен прокси за да испорачате статична содржина, но во случајот со Nextcloud, тоа нема да даде забележително зголемување на брзината. Значи, тоа е опционално и опционално.

Мило ми е што ја споделувам оваа приказна, се надевам дека некому ќе му биде од корист. Ако знаете поелегантни и поефикасни методи за решавање на проблемот, ќе ви бидам благодарен за коментарите!

Извор: www.habr.com

Додадете коментар