Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

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

Изненадващо, търсенето в Habré за OpenLiteSpeed ​​​​не дава нищо! Бързам да поправя тази несправедливост, защото LSWS е приличен уеб сървър. Харесвам го заради неговата скорост и изискан интерфейс за уеб администриране:

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

Въпреки че OpenLiteSpeed ​​​​е най-известен като "ускорител" на WordPress, в днешната статия ще покажа доста специфично използване на него. А именно обратно прокси на заявки (reverse proxy). Казвате, че е по-често да се използва nginx за това? Ще се съглася. Но боли толкова много, че се влюбихме в LSWS!

Проксирането е добре, но къде? В не по-малко прекрасна услуга - Nextcloud. Използваме Nextcloud за създаване на частни „облаци за споделяне на файлове“. За всеки клиент ние разпределяме отделна виртуална машина с Nextcloud и не искаме да ги излагаме „навън“. Вместо това, ние прокси заявки чрез общ обратен прокси. Това решение позволява:
1) премахнете сървъра, на който се съхраняват клиентските данни от интернет и
2) запазване на ip-адреси.

Диаграмата изглежда така:

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

Ясно е, че схемата е опростена, т.к организацията на инфраструктурата на уеб услугите не е темата на днешната статия.

Също така в тази статия ще пропусна инсталирането и основната конфигурация на nextcloud, особено след като има материали по тази тема на Habré. Но определено ще покажа настройките, без които 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 bash
Sudo актуализация ап-да

инсталирай, стартирай:

sudo apt-get инсталирайте openlitespeed
sudo /usr/local/lsws/bin/lswsctrl start

  • Минимална настройка на защитната стена.

    sudo ufw позволяват ssh
    sudo ufw по подразбиране позволява изходящи
    sudo ufw по подразбиране отказва входящи
    sudo ufw позволи http
    sudo ufw разреши https
    sudo ufw разреши от вашият хост за управление към всеки порт 7080
    sudo ufw позволи

  • Настройте OpenLiteSpeed ​​​​като обратен прокси.
    Нека създадем директории под виртуалния хост.

    cd /usr/local/lsws/
    sudo mkdirc cloud.connect.link
    cd cloud.connect.link/
    sudo mkdir {conf,html,logs}
    sudo chown lsadm:lsadm ./conf/

Нека конфигурираме виртуалния хост от уеб интерфейса на LSWS.
Отворете управлението на URL адреси http://cloud.connect.link:7080
Вход/парола по подразбиране: admin/123456

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

Добавете виртуален хост (Виртуални хостове > Добавяне).
При добавяне ще се появи съобщение за грешка - конфигурационният файл липсва. Това е нормално, решава се чрез щракване върху Щракнете, за да създадете.

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

В раздела Общи посочете корена на документа (въпреки че не е необходим, конфигурацията няма да излети без него). Името на домейна, ако не е посочено, ще бъде взето от името на виртуалния хост, което нарекохме име на домейн.

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

Сега е време да си припомним, че имаме не просто уеб сървър, а обратен прокси. Следните настройки ще кажат на LSWS какво да проксира и къде. В настройките на virtualhost отворете раздела External App и добавете ново приложение от типа на уеб сървъра:

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

Посочете име и адрес. Можете да посочите произволно име, но трябва да го запомните, то ще ви бъде полезно в следващите стъпки. Адресът е този, на който Nextcloud живее във вътрешната мрежа:

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

В същите настройки на виртуален хост отворете раздела Контекст и създайте нов контекст от типа Прокси:

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

Посочете параметрите: URI = /, уеб сървър = nextcloud_1 (име от предишната стъпка)

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

Рестартирайте LSWS. Това става с един клик от уеб интерфейса, чудеса! (в мен говори потомствен носител на мишка)

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси
Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

Нека създадем "слушател" (Listeners > Add), нека го наречем "https". Насочете го към порт 443 и имайте предвид, че ще бъде защитен:

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

В раздела SSL посочете пътя до ключа и сертификата:

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

„Слушателят“ е създаден, сега в раздела Virtual Host Mappings ще добавим нашия виртуален хост към него:

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

Ако LSWS ще прокси само към една услуга, конфигурацията може да бъде завършена. Но планираме да го използваме за изпращане на заявки до различни „инстанции“ в зависимост от името на домейна. И всички домейни ще имат свои собствени сертификати. Следователно трябва да отидете до конфигурацията на virtualhost и отново да посочите неговия ключ и сертификат в раздела SSL. В бъдеще това трябва да се прави за всеки нов виртуален хост.

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

Остава да конфигурирате пренаписването на url така, че http заявките да се адресират до https.
(Между другото, кога ще свърши това? Време е браузърите и другият софтуер да преминат към https по подразбиране и да пренасочат към no-SSL ръчно, ако е необходимо).
Включете Enable Rewrite и напишете правила за пренаписване:

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

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

Поради странно недоразумение е невъзможно да се приложат правилата за пренаписване с обичайното грациозно рестартиране. Затова ще рестартираме LSWS не грациозно, а грубо и ефективно:

sudo systemctl рестартирайте lsws.service

За да накарате сървъра да слуша порт 80, нека създадем друг слушател. Нека го наречем http, уточним 80-ия порт и че той ще бъде незащитен:

Nextcloud вътре и извън OpenLiteSpeed: настройка на обратно прокси

По аналогия с настройката на https listener, нека прикрепим нашия виртуален хост към него.

Сега 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

Добавяне на нов коментар