Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Bagaimanakah cara saya menyediakan OpenLiteSpeed ​​​​untuk membalikkan proksi kepada Nextcloud pada rangkaian dalaman?

Anehnya, carian di Habré untuk OpenLiteSpeed ​​​​tidak memberikan apa-apa! Saya segera membetulkan ketidakadilan ini, kerana LSWS ialah pelayan web yang baik. Saya menyukainya kerana kelajuan dan antara muka pentadbiran web yang mewah:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Walaupun OpenLiteSpeed ​​​​ paling terkenal sebagai "pemecut" WordPress, dalam artikel hari ini saya akan menunjukkan penggunaannya yang agak khusus. Iaitu reverse proxying permintaan (reverse proxy). Anda mengatakan bahawa lebih biasa menggunakan nginx untuk ini? Saya akan bersetuju. Tetapi ia sangat menyakitkan kami jatuh cinta dengan LSWS!

Proksi adalah ok, tetapi di mana? Dalam perkhidmatan yang tidak kurang hebatnya - Nextcloud. Kami menggunakan Nextcloud untuk mencipta "awan perkongsian fail" peribadi. Untuk setiap pelanggan, kami memperuntukkan VM berasingan dengan Nextcloud, dan kami tidak mahu mendedahkannya "di luar". Sebaliknya, kami meminta proksi melalui proksi songsang biasa. Penyelesaian ini membolehkan:
1) alih keluar pelayan di mana data pelanggan disimpan dari Internet dan
2) simpan alamat ip.

Gambarajah seperti ini:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Adalah jelas bahawa skim itu dipermudahkan, kerana organisasi infrastruktur perkhidmatan web bukanlah topik artikel hari ini.

Juga dalam artikel ini saya akan meninggalkan pemasangan dan konfigurasi asas nextcloud, terutamanya kerana Habré mempunyai bahan mengenai topik ini. Tetapi saya pasti akan menunjukkan tetapan, tanpanya Nextcloud tidak akan berfungsi di belakang proksi.

Diberi:
Nextcloud dipasang pada hos 1 dan dikonfigurasikan untuk berfungsi melalui http (tanpa SSL), hanya mempunyai antara muka rangkaian tempatan dan alamat IP "kelabu" 172.16.22.110.
Mari konfigurasikan OpenLiteSpeed ​​​​pada hos 2. Ia mempunyai dua antara muka, luaran (kelihatan ke Internet) dan dalaman dengan alamat IP pada rangkaian 172.16.22.0/24
Alamat IP antara muka luaran hos 2 ialah nama DNS cloud.connect.link

Tugas:
Dapatkan daripada Internet melalui pautan 'https://cloud.connect.link' (SSL) kepada Nextcloud pada rangkaian dalaman.

  • Memasang OpenLiteSpeed ​​​​pada Ubuntu 18.04.2.

Mari tambah repositori:

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

pasang, jalankan:

sudo apt-get install openlitespeed
sudo /usr/local/lsws/bin/lswsctrl mula

  • Persediaan tembok api minimum.

    sudo ufw membenarkan ssh
    sudo ufw lalai membenarkan keluar
    sudo ufw lalai menafikan masuk
    sudo ufw membenarkan http
    sudo ufw allowhttps
    sudo ufw benarkan dari hos pengurusan anda ke mana-mana port 7080
    sudo ufw membolehkan

  • Sediakan OpenLiteSpeed ​​​​sebagai proksi terbalik.
    Mari buat direktori di bawah virtualhost.

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

Mari kita konfigurasikan hos maya daripada antara muka web LSWS.
Buka pengurusan url http://cloud.connect.link:7080
Log masuk/kata laluan lalai: admin/123456

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Tambah hos maya (Hos Maya > Tambah).
Apabila menambah, mesej ralat akan muncul - fail konfigurasi tiada. Ini adalah perkara biasa, diselesaikan dengan mengklik Klik untuk mencipta.

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Dalam tab Umum, nyatakan Akar Dokumen (walaupun ia tidak diperlukan, konfigurasi tidak akan dimatikan tanpanya). Nama Domain, jika tidak dinyatakan, akan diambil daripada Nama Hos Maya, yang kami namakan nama domain kami.

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Kini tiba masanya untuk ingat bahawa kami bukan sahaja mempunyai pelayan web, tetapi proksi terbalik. Tetapan berikut akan memberitahu LSWS perkara yang hendak diproksi dan di mana. Dalam tetapan virtualhost, buka tab Apl Luaran dan tambahkan aplikasi baharu jenis pelayan Web:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Nyatakan nama dan alamat. Anda boleh menentukan nama sewenang-wenangnya, tetapi anda perlu mengingatinya, ia akan berguna dalam langkah seterusnya. Alamatnya ialah tempat Nextcloud tinggal dalam rangkaian dalaman:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Dalam tetapan hos maya yang sama, buka tab Konteks dan buat konteks baharu jenis Proksi:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Nyatakan parameter: URI = /, Pelayan web = nextcloud_1 (nama daripada langkah sebelumnya)

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Mulakan semula LSWS. Ini dilakukan dengan satu klik dari antara muka web, keajaiban! (pembawa tikus keturunan bercakap dalam diri saya)

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik
Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

  • Kami meletakkan sijil, konfigurasikan https.
    Prosedur untuk mendapatkan sijil kami akan meninggalkannya, bersetuju bahawa kami sudah memilikinya dan terletak dengan kunci dalam direktori /etc/letsencrypt/live/cloud.connect.link.

Mari buat "pendengar" (Pendengar > Tambah), mari kita panggil "https". Arahkannya ke port 443 dan ambil perhatian bahawa ia akan selamat:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Dalam tab SSL, tentukan laluan ke kunci dan sijil:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

"Pendengar" telah dibuat, kini dalam bahagian Pemetaan Hos Maya kami akan menambah hos maya kami kepadanya:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Jika LSWS hanya akan proksi kepada satu perkhidmatan, konfigurasi boleh dilengkapkan. Tetapi kami merancang untuk menggunakannya untuk menghantar permintaan kepada "kejadian" yang berbeza bergantung pada nama domain. Dan semua domain akan mempunyai sijil mereka sendiri. Oleh itu, anda perlu pergi ke konfigurasi virtualhost dan sekali lagi nyatakan kunci dan sijilnya dalam tab SSL. Pada masa hadapan, ini perlu dilakukan untuk setiap hos maya baharu.

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Ia kekal untuk mengkonfigurasi penulisan semula url supaya permintaan http ditujukan kepada https.
(Omong-omong, bilakah ini akan berakhir? Sudah tiba masanya untuk penyemak imbas dan perisian lain pergi ke https secara lalai, dan majukan ke no-SSL secara manual jika perlu).
Hidupkan Dayakan Tulis Semula dan tulis Peraturan Tulis Semula:

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

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Disebabkan salah faham yang aneh, adalah mustahil untuk menggunakan peraturan Tulis Semula dengan mula semula Graceful yang biasa. Oleh itu, kami akan memulakan semula LSWS bukan dengan anggun, tetapi secara kasar dan cekap:

sudo systemctl mulakan semula lsws.service

Untuk menjadikan pelayan mendengar port 80, mari buat Pendengar lain. Mari kita panggilnya http, nyatakan port ke-80 dan ia akan menjadi tidak Selamat:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Dengan analogi dengan tetapan pendengar https, mari lampirkan hos maya kami padanya.

Sekarang LSWS akan mendengar pada port 80 dan menghantar permintaan kepada 443 daripadanya, menulis semula url.
Sebagai kesimpulan, saya mengesyorkan menurunkan tahap pengelogan LSWS, yang ditetapkan kepada Nyahpepijat secara lalai. Dalam mod ini, log membiak pada kelajuan kilat! Untuk kebanyakan kes, tahap Amaran adalah mencukupi. Pergi ke Konfigurasi Pelayan > Log:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Ini melengkapkan konfigurasi OpenLiteSpeed ​​​​sebagai proksi terbalik. Sekali lagi, mulakan semula LSWS, ikut pautan https://cloud.connect.link dan lihat:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Untuk membolehkan Nextcloud membenarkan kami masuk, kami perlu menambahkan domain cloud.connect.link pada senarai yang dipercayai. Jom edit config.php. Saya memasang Nextcloud secara automatik apabila memasang Ubuntu dan konfigurasi terletak di sini: /var/snap/nextcloud/current/nextcloud/config.
Tambahkan parameter 'cloud.connect.link' pada kunci trusted_domains:

'domain_dipercayai' =>
susunan (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Selanjutnya, dalam konfigurasi yang sama, anda mesti menyatakan alamat IP proksi kami. Saya menarik perhatian anda kepada fakta bahawa alamat mesti ditentukan yang boleh dilihat oleh pelayan Nextcloud, i.e. IP antara muka LSWS tempatan. Tanpa langkah ini, antara muka web Nextcloud berfungsi, tetapi aplikasi tidak dibenarkan.

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

Hebat, selepas itu kita boleh masuk ke antara muka kebenaran:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyediakan proksi terbalik

Masalah selesai! Kini setiap pelanggan boleh menggunakan "awan fail" dengan selamat di url peribadinya sendiri, pelayan dengan fail dipisahkan dari Internet, pelanggan masa depan akan menerima semuanya sama dan tidak ada satu pun alamat IP tambahan akan terjejas.
Selain itu, anda boleh menggunakan proksi terbalik untuk menyampaikan kandungan statik, tetapi dalam kes Nextcloud, ini tidak akan memberikan peningkatan yang ketara dalam kelajuan. Jadi ia adalah pilihan dan pilihan.

Sukacita saya berkongsi cerita ini, saya harap ia akan berguna kepada seseorang. Jika anda tahu kaedah yang lebih elegan dan cekap untuk menyelesaikan masalah, saya akan berterima kasih atas komen!

Sumber: www.habr.com

Tambah komen