OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Ichki tarmoqdagi proksi-serverni Nextcloud-ga qaytarish uchun OpenLiteSpeed-ni qanday sozlashim mumkin?

Ajablanarlisi shundaki, Habré-da OpenLiteSpeed ​​uchun qidiruv hech narsa bermaydi! Men bu adolatsizlikni tuzatishga shoshildim, chunki LSWS munosib veb-server. Men uni tezligi va ajoyib veb boshqaruv interfeysi uchun yaxshi ko'raman:

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

OpenLiteSpeed ​​WordPress "tezlatgichi" sifatida eng mashhur bo'lsa ham, bugungi maqolada men undan juda aniq foydalanishni ko'rsataman. Ya'ni so'rovlarni teskari proksi-server (teskari proksi). Buning uchun nginx-dan foydalanish keng tarqalgan deb aytasizmi? Men rozi bo'laman. Ammo biz LSWSni sevib qolganimiz shunchalik og'riyapti!

Proksi-server yaxshi, lekin qayerda? Bundan kam bo'lmagan ajoyib xizmatda - Nextcloud. Shaxsiy "fayl almashish bulutlarini" yaratish uchun biz Nextcloud-dan foydalanamiz. Har bir mijoz uchun biz Nextcloud bilan alohida VM ajratamiz va biz ularni “tashqarida” ochishni istamaymiz. Buning o'rniga biz umumiy teskari proksi-server orqali proksi so'rovlarini yuboramiz. Ushbu yechim quyidagilarga imkon beradi:
1) mijoz ma'lumotlari saqlanadigan serverni Internetdan olib tashlang va
2) IP-manzillarni saqlash.

Diagramma quyidagicha ko'rinadi:

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Sxema soddalashtirilganligi aniq, chunki veb-xizmatlar infratuzilmasini tashkil etish bugungi maqolaning mavzusi emas.

Shuningdek, ushbu maqolada men keyingi bulutning o'rnatilishi va asosiy konfiguratsiyasini o'tkazib yuboraman, ayniqsa Habré-da ushbu mavzu bo'yicha materiallar mavjud. Lekin men, albatta, sozlamalarni ko'rsataman, ularsiz Nextcloud proksi-server ortida ishlamaydi.

May:
Nextcloud 1-xostda oʻrnatilgan va http orqali ishlash uchun sozlangan (SSLsiz), faqat mahalliy tarmoq interfeysi va “kulrang” IP manzili 172.16.22.110.
2-hostda OpenLiteSpeed-ni sozlaymiz. U ikkita interfeysga ega, tashqi (Internetga qaraydi) va tarmoqdagi IP manzili 172.16.22.0/24 bo'lgan ichki.
Xost 2 tashqi interfeysi IP manzili DNS nomi cloud.connect.link

Vazifa:
' havolasi orqali Internetdan olinghttps://cloud.connect.link' (SSL) ichki tarmoqdagi Nextcloud-ga.

  • Ubuntu 18.04.2 da OpenLiteSpeed-ni o'rnatish.

Keling, omborni qo'shamiz:

wget -O http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh | sudo bash
sudo apt-get yangilanishi

o'rnatish, ishga tushirish:

sudo apt-get openlitespeed-ni o'rnating
sudo /usr/local/lsws/bin/lswsctrl start

  • Minimal xavfsizlik devori o'rnatilishi.

    sudo ufw ssh ga ruxsat beradi
    sudo ufw sukut bo'yicha chiqishga ruxsat beradi
    sudo ufw sukut bo'yicha kiruvchini rad etadi
    sudo ufw http-ga ruxsat berish
    sudo ufw ruxsat https
    sudo ufw dan ruxsat beradi boshqaruv xostingingiz har qanday 7080 portiga
    sudo ufw yoqadi

  • OpenLiteSpeed-ni teskari proksi-server sifatida sozlang.
    Virtualhost ostida kataloglar yarataylik.

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

LSWS veb-interfeysidan virtual xostni sozlaymiz.
URL boshqaruvini oching http://cloud.connect.link:7080
Standart login/parol: admin/123456

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Virtual xost qo'shing (Virtual xostlar > Qo'shish).
Qo'shish paytida xato xabari paydo bo'ladi - konfiguratsiya fayli yo'q. Bu normal holat, “Yaratish uchun bosing” tugmasini bosish orqali hal qilinadi.

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Umumiy yorlig'ida Hujjat ildizini belgilang (garchi u kerak bo'lmasa ham, konfiguratsiya ularsiz o'chirilmaydi). Domen nomi, agar ko'rsatilmagan bo'lsa, biz domen nomini qo'ygan Virtual Xost nomidan olinadi.

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Endi bizda nafaqat veb-server, balki teskari proksi-server ham borligini eslash vaqti keldi. Quyidagi sozlamalar LSWSga nima va qayerda proksi-server o'tkazish kerakligini aytadi. Virtual host sozlamalarida Tashqi ilova yorlig'ini oching va veb-server turidagi yangi ilovani qo'shing:

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Ism va manzilni belgilang. Siz o'zboshimchalik bilan nom belgilashingiz mumkin, lekin uni eslab qolishingiz kerak, u keyingi bosqichlarda foydali bo'ladi. Manzil Nextcloud ichki tarmoqda yashaydigan manzil:

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Xuddi shu virtual xost sozlamalarida Kontekst yorlig'ini oching va proksi turidagi yangi kontekstni yarating:

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Parametrlarni belgilang: URI = /, veb-server = nextcloud_1 (oldingi bosqichdagi nom)

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

LSWSni qayta ishga tushiring. Bu veb-interfeysdan bir marta bosish bilan amalga oshiriladi, mo''jizalar! (irsiy sichqonchani tashuvchi menda gapiradi)

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash
OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

  • Biz sertifikat qo'yamiz, https-ni sozlaymiz.
    Sertifikat olish tartibi biz buni o'tkazib yuboramiz, bizda allaqachon borligiga rozi bo'lamiz va kalit bilan /etc/letsencrypt/live/cloud.connect.link katalogida yotamiz.

Keling, "tinglovchi" yarataylik (Listeners > Add), keling, uni "https" deb ataymiz. Uni 443-portga yo'naltiring va u xavfsiz bo'lishini unutmang:

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

SSL yorlig'ida kalit va sertifikatga yo'lni belgilang:

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

"Tinglovchi" yaratildi, endi Virtual xost xaritalari bo'limida biz unga virtual xostimizni qo'shamiz:

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Agar LSWS faqat bitta xizmatga proksi-server yuborsa, konfiguratsiya tugallanishi mumkin. Lekin biz undan domen nomiga qarab turli “instansiyalarga” so‘rov yuborish uchun foydalanishni rejalashtirmoqdamiz. Va barcha domenlar o'z sertifikatlariga ega bo'ladi. Shuning uchun siz virtual host konfiguratsiyasiga o'tishingiz va SSL yorlig'ida yana uning kaliti va sertifikatini ko'rsatishingiz kerak. Kelajakda bu har bir yangi virtual xost uchun bajarilishi kerak.

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Http so'rovlari https-ga yuborilishi uchun url-ni qayta yozishni sozlash qoladi.
(Aytgancha, bu qachon tugaydi? Brauzerlar va boshqa dasturlar sukut bo'yicha https-ga o'tish va kerak bo'lsa, qo'lda no-SSL-ga o'tish vaqti keldi).
Qayta yozishni yoqish va Qayta yozish qoidalarini yozishni yoqing:

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

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

G'alati tushunmovchilik tufayli odatiy Graceful qayta ishga tushirish bilan Qayta yozish qoidalarini qo'llash mumkin emas. Shuning uchun biz LSWS ni chiroyli tarzda emas, balki qo'pol va samarali qayta ishga tushiramiz:

sudo systemctl lsws.service ni qayta ishga tushiring

Server 80-portni tinglashi uchun boshqa tinglovchi yarataylik. Keling, uni http deb nomlaymiz, 80-portni belgilaymiz va u xavfsiz bo'lmaydi:

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

https tinglovchi sozlamalariga o'xshab, keling, virtual xostimizni unga biriktiramiz.

Endi LSWS 80-portni tinglaydi va undan 443-ga so'rovlar yuboradi, urlni qayta yozadi.
Xulosa qilib aytganda, sukut bo'yicha Debug ga o'rnatilgan LSWS jurnali darajasini pasaytirishni tavsiya qilaman. Ushbu rejimda jurnallar chaqmoq tezligida ko'payadi! Aksariyat hollarda ogohlantirish darajasi etarli. Server konfiguratsiyasi > Jurnalga o‘ting:

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Bu teskari proksi sifatida OpenLiteSpeed ​​konfiguratsiyasini yakunlaydi. Yana bir bor LSWS-ni qayta ishga tushiring, havolaga o'ting https://cloud.connect.link va qarang:

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Nextcloud bizga kirishga ruxsat berish uchun biz ishonchli ro'yxatga cloud.connect.link domenini qo'shishimiz kerak. Keling, config.php ni tahrirlaymiz. Ubuntu-ni o'rnatishda Nextcloud-ni avtomatik ravishda o'rnatdim va konfiguratsiya bu erda joylashgan: /var/snap/nextcloud/current/nextcloud/config.
Trusted_domains kalitiga "cloud.connect.link" parametrini qo'shing:

'trusted_domains' =>
qator (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Bundan tashqari, xuddi shu konfiguratsiyada siz bizning proksi-serverimizning IP-manzilini ko'rsatishingiz kerak. Sizning e'tiboringizni Nextcloud serveriga ko'rinadigan manzil ko'rsatilishi kerakligiga qarataman, ya'ni. Mahalliy LSWS interfeysining IP. Ushbu qadamsiz Nextcloud veb-interfeysi ishlaydi, lekin ilovalarga ruxsat berilmaydi.

'trusted_proxies' =>
qator (
0 => '172.16.22.100',
),

Ajoyib, shundan so'ng biz avtorizatsiya interfeysiga kirishimiz mumkin:

OpenLiteSpeed ​​ichida va tashqarisida Nextcloud: teskari proksi-serverni sozlash

Muammo hal qilindi! Endi har bir mijoz o'zining shaxsiy URL manzilida "fayl buluti" dan xavfsiz foydalanishi mumkin, fayllarga ega server Internetdan ajratilgan, kelajakdagi mijozlar hamma narsani bir xil qabul qiladi va bitta qo'shimcha IP manziliga ta'sir qilmaydi.
Bundan tashqari, siz statik tarkibni etkazib berish uchun teskari proksi-serverdan foydalanishingiz mumkin, ammo Nextcloud-da bu tezlikni sezilarli darajada oshirmaydi. Shunday qilib, bu ixtiyoriy va ixtiyoriy.

Men bu voqeani baham ko'rishdan xursandman, umid qilamanki, kimgadir foydali bo'ladi. Muammoni hal qilishning yanada oqlangan va samarali usullarini bilsangiz, sharhlar uchun minnatdor bo'laman!

Manba: www.habr.com

a Izoh qo'shish