Nextcloud di dalam dan di luar OpenLiteSpeed: konfigurasikan proxy terbalik

Bagaimana cara mengkonfigurasi OpenLiteSpeed ​​untuk membalikkan proxy di Nextcloud, yang terletak di jaringan internal?


Anehnya, pencarian di Habré untuk OpenLiteSpeed ​​tidak menghasilkan apa-apa! Saya segera memperbaiki ketidakadilan ini, karena LSWS adalah server web yang layak. Saya suka dia untuk antarmuka administrasi web yang cepat dan modis:


gambar


Terlepas dari kenyataan bahwa OpenLiteSpeed ​​paling terkenal sebagai "akselerator" WordPress, dalam artikel hari ini saya akan menunjukkan aplikasi yang agak spesifik. Yaitu membalikkan permintaan proxy (reverse proxy). Anda mengatakan bahwa lebih umum menggunakan nginx untuk ini? Saya akan setuju. Tapi itu benar-benar melukai kita untuk mencintai LSWS!


Proksi ok, tapi dimana? Layanan yang sama hebatnya adalah Nextcloud. Kami menggunakan Nextcloud untuk membuat "cloud file-sharing" pribadi. Untuk setiap klien, kami mengalokasikan VM terpisah dengan Nextcloud, dan tidak ingin mengekspos mereka "keluar". Sebagai gantinya, kami mem-proxy permintaan melalui proxy terbalik umum. Solusi ini memungkinkan Anda untuk:


  1. menghapus server tempat data klien disimpan dari Internet dan
  2. simpan alamat ip.

Skemanya terlihat seperti ini:


gambar


Jelas bahwa skema ini disederhanakan, karena mengatur infrastruktur layanan web bukan topik artikel hari ini.


Juga dalam artikel ini saya akan menghilangkan instalasi dan konfigurasi dasar non-clauda, ​​terutama karena ada materi tentang topik ini di Habré. Tapi saya pasti akan menunjukkan pengaturan, yang tanpanya Nextcloud tidak akan berfungsi untuk proxy.


Diberikan: Nextcloud diinstal pada host 1 dan dikonfigurasikan untuk bekerja melalui http (tanpa SSL), ia hanya memiliki antarmuka jaringan lokal dan alamat IP "abu-abu" 172.16.22.110.


Kami akan mengkonfigurasi OpenLiteSpeed ​​pada host 2. Ini memiliki dua antarmuka, yang eksternal (terlihat di Internet) dan yang internal dengan alamat IP pada jaringan 172.16.22.0/24


Nama DNS cloud.connect.link mengarah ke alamat IP antarmuka eksternal host 2


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


  • Instal OpenLiteSpeed ​​di Ubuntu 18.04.2.

Tambahkan repositori:


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

atur, jalankan:


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

  • Minimalkan firewall.
    sudo ufw izinkan ssh
    sudo ufw default memungkinkan keluar
    sudo ufw default tolak masuk
    sudo ufw memungkinkan http
    sudo ufw memungkinkan https
    sudo ufw izinkan dari host manajemen Anda ke port 7080
    sudo ufw aktifkan
  • Atur OpenLiteSpeed ​​sebagai proxy terbalik.
    Buat direktori untuk virtualhost.
    cd / usr / local / lsws /
    sudo mkdirc cloud.connect.link
    cd cloud.connect.link/
    sudo mkdir {conf, html, logs}
    sudo chown lsadm: lsadm ./conf/

Konfigurasikan virtualhost dari antarmuka web LSWS.
Buka manajemen url http://cloud.connect.link:7080
Login / kata sandi default: admin / 123456


gambar


Tambahkan host virtual (Host Virtual> Tambah).


Saat menambahkan, pesan kesalahan akan muncul - tidak ada file konfigurasi. Ini normal, diselesaikan dengan mengeklik Klik untuk membuat.


gambar


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


gambar


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


gambar


Tunjukkan nama dan alamatnya. Nama dapat ditentukan secara sewenang-wenang, tetapi harus diingat, berguna dalam langkah selanjutnya. Alamatnya adalah tempat tinggal Nextcloud di jaringan internal:


gambar


Dalam pengaturan yang sama dari host virtual, buka tab Konteks dan buat konteks baru dari tipe Proxy:


gambar


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


gambar


Mulai ulang LSWS. Ini dilakukan dengan satu klik dari antarmuka web, keajaiban! (Pembawa tikus herediter berbicara pada saya)


gambar


gambar


  • Kami menempatkan sertifikat, mengkonfigurasi https.
    Kami akan mengabaikan prosedur untuk memperoleh sertifikat , setuju bahwa kami sudah memilikinya dan berbaring dengan kunci di direktori /etc/letsencrypt/live/cloud.connect.link.

Buat "pendengar" (Pendengar> Tambah), sebut saja "https". Kami arahkan ke port 443 dan perhatikan bahwa itu akan Aman:


gambar


Di tab SSL, tentukan jalur ke kunci dan sertifikat:


gambar


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


gambar


Jika LSWS hanya mewakili satu layanan, konfigurasi dapat diselesaikan. Tetapi kami berencana menggunakannya untuk mentransfer permintaan ke "otoritas" yang berbeda tergantung pada nama domain. Dan semua domain akan memiliki sertifikat sendiri. Oleh karena itu, Anda perlu pergi ke konfigurasi virtualhost dan tentukan lagi kunci dan sertifikatnya di tab SSL. Di masa depan, ini harus dilakukan untuk setiap host virtual baru.


gambar


Tetap mengonfigurasi penulisan ulang url agar permintaan http ditujukan ke https.


(Omong-omong, kapan ini akan berakhir? Sudah waktunya browser dan perangkat lunak lain untuk membuka https secara default, dan melakukan penerusan tanpa-SSL secara manual jika perlu).
Aktifkan Aktifkan Penulisan Ulang dan tulis Aturan Penulisan Ulang:


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

gambar


Tidak mungkin untuk menerapkan aturan Menulis Ulang dengan Restart Anggun yang biasa karena kesalahpahaman yang aneh. Karenanya, memulai ulang LSWS tidak elegan, tetapi kasar dan efisien:


sudo systemctl restart lsws.service

Agar server mendengarkan port 80, buat Listener lain. Sebut saja http, tentukan port ke-80 dan tidak aman:


gambar


Dengan analogi dengan pengaturan pendengar https, mari lampirkan host virtual kami untuk itu.


Sekarang LSWS akan mendengarkan port ke-80 dan mengirim permintaan dari sana ke 443, menulis ulang url.
Sebagai kesimpulan, saya sarankan menurunkan tingkat logging LSWS, yang ditetapkan sebagai Debug secara default. Dalam mode ini, log berkembang biak dengan kecepatan kilat! Untuk sebagian besar kasus, tingkat Peringatan sudah cukup. Pergi ke Konfigurasi Server> Log:


gambar


Ini melengkapi konfigurasi OpenLiteSpeed ​​sebagai proxy terbalik. Sekali lagi kami memulai ulang LSWS, ikuti tautan https://cloud.connect.link dan lihat:


gambar


Agar Nextcloud mengizinkan kami masuk, Anda perlu menambahkan domain cloud.connect.link ke daftar yang tepercaya. Pergi edit config.php. Saya menginstal Nextcloud secara otomatis ketika menginstal Ubuntu dan konfigurasi ada di sini: / var / snap / nextcloud / current / nextcloud / config.


Untuk kunci tepercaya_domain, tambahkan parameter 'cloud.connect.link':


'trust_domains' =>
array (
0 => '172.16.22.110',
1 => 'cloud.connect.link',
),

gambar


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


'trust_proxies' =>
array (
0 => '172.16.22.100',
),

Nah, setelah itu kita bisa masuk ke antarmuka otorisasi:


gambar


Masalahnya terpecahkan! Sekarang setiap klien dapat menggunakan "file cloud" dengan aman di url pribadinya, server dengan file dipisahkan dari Internet, klien masa depan akan mendapatkan hal yang sama dan tidak ada 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 ini opsional dan opsional.


Senang berbagi cerita ini, saya berharap seseorang akan membantu. Jika Anda tahu metode yang lebih elegan dan efektif untuk menyelesaikan tugas - saya akan berterima kasih atas komentarnya!

Source: https://habr.com/ru/post/id452750/


All Articles