Нектцлоуд унутар и изван ОпенЛитеСпеед-а: подешавање обрнутог проксија
Како да подесим ОпенЛитеСпеед да обрне прокси на Нектцлоуд на интерној мрежи?
Изненађујуће, претрага на Хабре за ОпенЛитеСпеед не даје ништа! Журим да исправим ову неправду, јер је ЛСВС пристојан веб сервер. Волим га због његове брзине и фенси интерфејса за веб администрацију:
Иако је ОпенЛитеСпеед најпознатији као ВордПресс „акцелератор“, у данашњем чланку ћу показати његову прилично специфичну употребу. Наиме, обрнуто прокиирање захтева (реверсе проки). Кажете да је чешће користити нгинк за ово? сложићу се. Али толико боли да смо се заљубили у ЛСВС!
Прокси је у реду, али где? У не мање дивној услузи - Нектцлоуд. Користимо Нектцлоуд за креирање приватних „облака за дељење датотека“. За сваког клијента додељујемо посебан ВМ са Нектцлоуд-ом и не желимо да их излажемо „напољу“. Уместо тога, ми проксијемо захтеве преко заједничког обрнутог проксија. Ово решење омогућава:
1) уклоните сервер на коме се чувају подаци о клијенту са Интернета и
2) сачувајте ИП адресе.
Дијаграм изгледа овако:
Јасно је да је шема поједностављена, јер организација инфраструктуре веб сервиса није тема данашњег чланка.
Такође у овом чланку ћу изоставити инсталацију и основну конфигурацију нектцлоуда, поготово што на Хабре-у постоје материјали на ову тему. Али свакако ћу показати подешавања без којих Нектцлоуд неће радити иза проксија.
Дато:
Нектцлоуд је инсталиран на хосту 1 и конфигурисан да ради преко хттп (без ССЛ-а), има само интерфејс локалне мреже и „сиву“ ИП адресу 172.16.22.110.
Хајде да конфигуришемо ОпенЛитеСпеед на хосту 2. Има два интерфејса, екстерни (изгледа на Интернет) и интерни са ИП адресом на мрежи 172.16.22.0/24
ИП адреса спољног интерфејса хоста 2 је ДНС име цлоуд.цоннецт.линк
Задатак:
Преузмите са Интернета преко везе 'https://cloud.connect.link' (ССЛ) на Нектцлоуд на интерној мрежи.
Хајде да конфигуришемо виртуелни хост са ЛСВС веб интерфејса.
Отворите управљање УРЛ-овима http://cloud.connect.link:7080
Подразумевана пријава/лозинка: админ/123456
Додајте виртуелни хост (Виртуелни домаћини > Додај).
Приликом додавања појавиће се порука о грешци - недостаје конфигурациона датотека. Ово је нормално, решава се кликом на Кликните за креирање.
На картици Опште наведите корен документа (иако није потребан, конфигурација неће успети без њега). Име домена, ако није наведено, биће преузето из имена виртуелног хоста, које смо назвали нашим именом домена.
Сада је време да се сетимо да немамо само веб сервер, већ и обрнути прокси. Следећа подешавања ће рећи ЛСВС-у шта да прокси и где. У подешавањима виртуелног хоста отворите картицу Екстерна апликација и додајте нову апликацију типа веб сервера:
Наведите име и адресу. Можете одредити произвољно име, али морате га запамтити, добро ће вам доћи у наредним корацима. Адреса је она на којој Нектцлоуд живи у интерној мрежи:
У истим подешавањима виртуелног хоста, отворите картицу Контекст и креирајте нови контекст типа проксија:
Поново покрените ЛСВС. Ово се ради једним кликом са веб интерфејса, чуда! (у мени говори наследни носач миша)
Стављамо сертификат, конфигуришемо хттпс. Поступак за добијање сертификата ми ћемо га изоставити, сложити се да га већ имамо и лежимо са кључем у /етц/летсенцрипт/ливе/цлоуд.цоннецт.линк директоријуму.
Хајде да направимо „слушалац“ (Слушаоци > Додај), назовимо га „хттпс“. Усмерите га на порт 443 и имајте на уму да ће бити безбедан:
На картици ССЛ наведите путању до кључа и сертификата:
„Слушалац“ је креиран, сада ћемо му у одељку Мапирања виртуелних хостова додати наш виртуелни хост:
Ако ЛСВС користи само једну услугу, конфигурација се може завршити. Али планирамо да га користимо за слање захтева на различите „инстанце“ у зависности од назива домена. И сви домени ће имати своје сертификате. Због тога морате да одете на конфигурацију виртуелног хоста и поново наведете његов кључ и сертификат на картици ССЛ. У будућности, то би требало да се уради за сваки нови виртуелни хост.
Остаје да се конфигурише преписивање УРЛ-а тако да се хттп захтеви адресирају на хттпс. (Успут, када ће се ово завршити? Време је да прегледачи и други софтвер подразумевано пређу на хттпс, и да ручно проследе на но-ССЛ ако је потребно).
Укључите Омогући поновно писање и напишите правила поновног писања:
Због чудног неспоразума, немогуће је применити правила Реврите уз уобичајено Грацефул рестарт. Стога ћемо поново покренути ЛСВС не грациозно, већ грубо и ефикасно:
судо системцтл рестарт лсвс.сервице
Да би сервер слушао порт 80, хајде да направимо други слушалац. Назовимо га хттп, наведите 80. порт и да неће бити безбедан:
По аналогији са хттпс поставком слушаоца, хајде да прикључимо наш виртуелни хост на њега.
Сада ће ЛСВС слушати порт 80 и са њега слати захтеве на 443, преправљајући урл.
У закључку, препоручујем да смањите ниво ЛСВС евиденције, који је подразумевано подешен на Отклањање грешака. У овом режиму, трупци се множе брзином муње! У већини случајева довољан је ниво упозорења. Идите на Конфигурација сервера > Дневник:
Ово завршава конфигурацију ОпенЛитеСпеед-а као обрнутог проксија. Још једном, поново покрените ЛСВС, пратите везу https://cloud.connect.link и видимо:
Да би нас Нектцлоуд пустио унутра, морамо додати домен цлоуд.цоннецт.линк на листу поузданих. Идемо да уредимо цонфиг.пхп. Аутоматски сам инсталирао Нектцлоуд када сам инсталирао Убунту и конфигурација се налази овде: /вар/снап/нектцлоуд/цуррент/нектцлоуд/цонфиг.
Додајте параметар 'цлоуд.цоннецт.линк' кључу трустед_домаинс:
Даље, у истој конфигурацији морате навести ИП адресу нашег проксија. Скрећем вам пажњу да адреса мора бити наведена она која је видљива Нектцлоуд серверу, тј. ИП локалног ЛСВС интерфејса. Без овог корака, Нектцлоуд веб интерфејс ради, али апликације нису овлашћене.
'трустед_прокиес' =>
низ (
0 => '172.16.22.100',
),
Одлично, након тога можемо ући у интерфејс за ауторизацију:
Проблем решен! Сада сваки клијент може безбедно да користи „облак датотека“ на свом личном УРЛ-у, сервер са фајловима је одвојен од интернета, будући клијенти ће све добијати исто и неће утицати ни на једну додатну ИП адресу.
Поред тога, можете користити обрнути прокси за испоруку статичког садржаја, али у случају Нектцлоуд-а, ово неће дати приметно повећање брзине. Дакле, то је опционо и опционо.
Драго ми је да поделим ову причу, надам се да ће некоме бити од користи. Ако знате елегантније и ефикасније методе за решавање проблема, бићу вам захвалан на коментарима!