Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Bagaimana cara mengatur OpenLiteSpeed ​​​​untuk membalikkan proxy ke Nextcloud di jaringan internal?

Anehnya, pencarian di Habré untuk OpenLiteSpeed ​​\uXNUMXb\uXNUMXbtidak memberikan apa-apa! Saya segera memperbaiki ketidakadilan ini, karena LSWS adalah server web yang layak. Saya menyukainya karena kecepatan dan antarmuka administrasi webnya yang mewah:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Meskipun OpenLiteSpeed ​​\uXNUMXb\uXNUMXbpaling terkenal sebagai "akselerator" WordPress, dalam artikel hari ini saya akan menunjukkan penggunaannya yang agak spesifik. Yakni membalikkan proxy permintaan (reverse proxy). Anda mengatakan bahwa lebih umum menggunakan nginx untuk ini? Saya akan setuju. Tapi sangat menyakitkan kami jatuh cinta dengan LSWS!

Proxy tidak apa-apa, tapi di mana? Dalam layanan yang tidak kalah hebatnya - Nextcloud. Kami menggunakan Nextcloud untuk membuat "awan berbagi file" pribadi. Untuk setiap klien, kami mengalokasikan VM terpisah dengan Nextcloud, dan kami tidak ingin mengeksposnya "di luar". Sebagai gantinya, kami mem-proxy permintaan melalui proxy terbalik yang umum. Solusi ini memungkinkan:
1) hapus server tempat data klien disimpan dari Internet dan
2) simpan alamat ip.

Skema ini terlihat seperti ini:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Jelas skema disederhanakan, karena organisasi infrastruktur layanan web bukanlah topik artikel hari ini.

Juga dalam artikel ini saya akan menghilangkan penginstalan dan konfigurasi dasar cloud berikutnya, terutama karena ada materi tentang topik ini di Habré. Tapi saya pasti akan menunjukkan pengaturannya, tanpanya Nextcloud tidak akan berfungsi di belakang proxy.

Diberikan:
Nextcloud diinstal pada host 1 dan dikonfigurasi untuk bekerja melalui http (tanpa SSL), hanya memiliki antarmuka jaringan lokal dan alamat IP "abu-abu" 172.16.22.110.
Mari konfigurasikan OpenLiteSpeed ​​​​pada host 2. Ini memiliki dua antarmuka, eksternal (terlihat ke Internet) dan internal dengan alamat IP di jaringan 172.16.22.0/24
Alamat IP antarmuka eksternal Host 2 adalah nama DNS cloud.connect.link

Tugas:
Dapatkan dari Internet melalui tautan 'https://cloud.connect.link' (SSL) ke Nextcloud di jaringan internal.

  • Menginstal OpenLiteSpeed ​​​​di Ubuntu 18.04.2.

Mari tambahkan repositori:

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

instal, jalankan:

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

  • Pengaturan firewall minimal.

    sudo ufw memungkinkan ssh
    sudo ufw default mengizinkan keluar
    sudo ufw default menolak masuk
    sudo ufw memungkinkan http
    sudo ufw memungkinkanhttps
    sudo ufw izinkan dari tuan rumah manajemen Anda ke port 7080 manapun
    sudo ufw aktifkan

  • Siapkan OpenLiteSpeed ​​\uXNUMXb\uXNUMXbsebagai proxy terbalik.
    Mari buat direktori di bawah virtualhost.

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

Mari konfigurasikan host virtual dari antarmuka web LSWS.
Buka manajemen url http://cloud.connect.link:7080
Login/kata sandi standar: admin/123456

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Tambahkan host virtual (Host Virtual > Tambah).
Saat menambahkan, pesan kesalahan akan muncul - file konfigurasi tidak ada. Ini normal, diselesaikan dengan mengklik Klik untuk membuat.

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Di tab Umum, tentukan Root Dokumen (meskipun tidak diperlukan, konfigurasi tidak akan lepas landas tanpanya). Nama Domain, jika tidak ditentukan, akan diambil dari Nama Host Virtual, yang kami beri nama nama domain kami.

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Sekarang saatnya untuk mengingat bahwa kita tidak hanya memiliki server web, tetapi juga proxy terbalik. Pengaturan berikut akan memberi tahu LSWS apa yang harus di-proxy dan di mana. Di pengaturan virtualhost, buka tab Aplikasi Eksternal dan tambahkan aplikasi baru dari jenis server Web:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Tentukan nama dan alamat. Anda dapat menentukan nama yang sewenang-wenang, tetapi Anda harus mengingatnya, ini akan berguna di langkah selanjutnya. Alamatnya adalah tempat Nextcloud tinggal di jaringan internal:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Di pengaturan virtualhost yang sama, buka tab Konteks dan buat konteks baru dari jenis Proksi:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Tentukan parameternya: URI = /, Web server = nextcloud_1 (nama dari langkah sebelumnya)

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Mulai ulang LSWS. Ini dilakukan dengan satu klik dari antarmuka web, keajaiban! (pembawa tikus keturunan berbicara dalam diriku)

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik
Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

  • Kami meletakkan sertifikat, mengkonfigurasi https.
    Prosedur untuk mendapatkan sertifikat kami akan menghilangkannya, setuju bahwa kami sudah memilikinya dan berbaring dengan kunci di direktori /etc/letsencrypt/live/cloud.connect.link.

Mari buat "listener" (Listeners > Add), sebut saja "https". Arahkan ke port 443 dan perhatikan bahwa itu akan Aman:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Di tab SSL, tentukan jalur ke kunci dan sertifikat:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

"Pendengar" telah dibuat, sekarang di bagian Pemetaan Host Virtual kami akan menambahkan host virtual kami ke dalamnya:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Jika LSWS hanya akan mem-proxy ke satu layanan, konfigurasi dapat diselesaikan. Tapi kami berencana menggunakannya untuk mengirim permintaan ke "instansi" berbeda tergantung pada nama domain. Dan semua domain akan memiliki sertifikatnya sendiri. Oleh karena itu, Anda harus pergi ke konfigurasi virtualhost dan sekali lagi menentukan kunci dan sertifikatnya di tab SSL. Di masa mendatang, ini harus dilakukan untuk setiap host virtual baru.

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Tetap mengonfigurasi penulisan ulang url sehingga permintaan http dialamatkan ke https.
(Ngomong-ngomong, kapan ini akan berakhir? Sudah waktunya browser dan perangkat lunak lain membuka https secara default, dan meneruskan ke no-SSL secara manual jika perlu).
Nyalakan Aktifkan Tulis Ulang dan tulis Aturan Penulisan Ulang:

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

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Karena kesalahpahaman yang aneh, tidak mungkin untuk menerapkan aturan Rewrite dengan restart Graceful yang biasa. Oleh karena itu, kami akan memulai ulang LSWS tidak dengan anggun, tetapi dengan kasar dan efisien:

sudo systemctl restart lsws.layanan

Untuk membuat server mendengarkan port 80, mari buat Pendengar lain. Sebut saja http, tentukan port ke-80 dan itu tidak aman:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Dengan analogi dengan pengaturan pendengar https, mari lampirkan host virtual kita ke sana.

Sekarang LSWS akan mendengarkan di port 80 dan mengirim permintaan ke 443 darinya, menulis ulang url.
Sebagai kesimpulan, saya merekomendasikan untuk menurunkan level logging LSWS, yang diatur ke Debug secara default. Dalam mode ini, log berkembang biak dengan kecepatan kilat! Untuk sebagian besar kasus, tingkat Peringatan sudah cukup. Buka Konfigurasi Server > Log:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Ini melengkapi konfigurasi OpenLiteSpeed ​​\uXNUMXb\uXNUMXbsebagai proxy terbalik. Sekali lagi, restart LSWS, ikuti tautannya https://cloud.connect.link Dan lihat:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Agar Nextcloud mengizinkan kami masuk, kami perlu menambahkan domain cloud.connect.link ke daftar tepercaya. Ayo edit config.php. Saya menginstal Nextcloud secara otomatis ketika menginstal Ubuntu dan konfigurasinya terletak di sini: /var/snap/nextcloud/current/nextcloud/config.
Tambahkan parameter 'cloud.connect.link' ke kunci Trusted_domains:

'domain_tepercaya' =>
Himpunan (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Selanjutnya, dalam konfigurasi yang sama, Anda harus menentukan alamat IP dari proxy kami. Saya menarik perhatian Anda pada fakta bahwa alamatnya harus ditentukan yang terlihat oleh server Nextcloud, mis. IP antarmuka LSWS lokal. Tanpa langkah ini, antarmuka web Nextcloud berfungsi, tetapi aplikasi tidak diotorisasi.

'proxy_tepercaya' =>
Himpunan (
0 => '172.16.22.100',
),

Bagus, setelah itu kita bisa masuk ke antarmuka otorisasi:

Nextcloud di dalam dan di luar OpenLiteSpeed: menyiapkan proxy terbalik

Masalah terpecahkan! Sekarang setiap klien dapat dengan aman menggunakan "file cloud" di url pribadinya sendiri, server dengan file dipisahkan dari Internet, klien masa depan akan menerima semuanya sama dan tidak ada satu pun alamat IP tambahan yang akan terpengaruh.
Selain itu, Anda dapat menggunakan proxy terbalik untuk mengirimkan konten statis, tetapi dalam kasus Nextcloud, ini tidak akan memberikan peningkatan kecepatan yang nyata. Jadi itu opsional dan opsional.

Saya senang berbagi cerita ini, semoga bermanfaat bagi seseorang. Jika Anda mengetahui metode yang lebih elegan dan efisien untuk menyelesaikan masalah, saya akan berterima kasih atas komentarnya!

Sumber: www.habr.com

Tambah komentar