Nginx

Proksi Terbalik Nginx

Proksi Terbalik Nginx

Apa itu proxy terbalik??

Server proxy adalah server yang berbicara ke Internet atas nama Anda. Misalnya, jika jaringan kampus Anda memblokir https://www.facebook.com/ tetapi domainnya  https://exampleproxy.com masih dapat diakses, maka Anda dapat mengunjungi yang terakhir dan itu akan meneruskan semua permintaan Anda untuk server Facebook ke Facebook, dan mengirim tanggapan dari Facebook kembali ke browser Anda.

Untuk rekap, proxy mengirimkan permintaan atas nama salah satu dari lebih banyak klien ke server mana pun di Internet. Proksi terbalik berperilaku dengan cara yang sama.

SEBUAH proxy terbalik menerima permintaan dari setiap dan semua klien atas nama satu atau lebih server. Jadi jika Anda memiliki beberapa server yang menghosting ww1.contoh.com dan ww2.contoh.com server proxy terbalik dapat menerima permintaan atas nama dua server, meneruskan permintaan tersebut ke titik akhir masing-masing di mana respons dihasilkan dan dikirim kembali ke proxy terbalik untuk diteruskan kembali ke klien.

Pengaturan

Sebelum kita mulai mengutak-atik file konfigurasi Nginx dan membuat server proxy terbalik. Saya ingin mengatur seperti apa pengaturan saya, jadi ketika Anda mencoba menerapkan desain Anda, itu akan tidak terlalu membingungkan.

Saya menggunakan platform DigitalOcean untuk memutar tiga VPS. Mereka semua berada di jaringan yang sama masing-masing dengan IP Pribadinya sendiri, dan hanya satu VPS yang memiliki IP publik statis (Ini akan menjadi server proxy terbalik kami.)

VM/Nama Host IP pribadi IP publik Wewenang
Proksi terbalik 10.135.123.187 159.89.108.14 Proksi terbalik, menjalankan Nginx
Node-1 10.135.123.183 T/A Menjalankan situs web pertama
simpul-2 10.135.123.186 T/A Menjalankan situs web kedua

Dua situs web berbeda yang berjalan memiliki nama domain ww1.ranvirslog.com dan ww2.ranvirslog.com dan kedua catatan A mereka menunjuk ke IP publik reverseproxy, mis.e, 159.89.108.14

Gagasan di balik IP pribadi adalah bahwa, ketiga VM dapat berbicara satu sama lain melalui IP pribadi ini, tetapi pengguna jarak jauh hanya dapat mengakses VM proxy terbalik di IP Publiknya. Ini penting untuk diingat. Misalnya, Anda tidak dapat melakukan ssh ke VM mana pun menggunakan IP Pribadinya.

Selanjutnya, baik Node-1 dan Node-2 memiliki server web Apache yang melayani dua halaman web yang berbeda distinct. Ini akan membantu kita membedakan satu dari yang lain.

Situs web pertama mengatakan "SITUS WEB 1 BEKERJA!!!”

Demikian pula, situs web kedua menunjukkan ini:

Situs web Anda mungkin berbeda, tetapi jika Anda ingin mereplikasi pengaturan ini sebagai titik awal, jalankan apt install Apache2 di Node-1 dan Node-2. Kemudian edit file /var/www/html/index.html sehingga server web mengatakan apa pun yang Anda ingin katakan.

VM reverseproxy masih belum tersentuh. Semua VM menjalankan Ubuntu 18.04 LTS, tetapi Anda bebas menggunakan OS lain yang Anda inginkan. Anda bahkan dapat meniru ini menggunakan wadah Docker. Dengan membuat jaringan jembatan Docker yang ditentukan pengguna dan wadah pemijahan di atasnya, Anda dapat menetapkan setiap wadah IP pribadi dan meneruskan semua proxy HTTP/HTTPS ke satu wadah, yang akan menjadi wadah proxy terbalik Nginx kami.

Sejauh ini bagus.

Konfigurasi Default Nginx

Mari kita mulai dengan menginstal Nginx ke server reverseproxy, saya menggunakan Ubuntu jadi apt adalah manajer paket saya:

$ sudo untuk menginstal nginx

Menghapus konfigurasi default jika Anda menggunakan distribusi berbasis Debian

Sebelum kita melangkah lebih jauh, catatan kecil tentang konfigurasi Nginx. Semua berbagai file konfigurasi disimpan di /etc/nginx termasuk nginx.conf yang merupakan file konfigurasi utama. Jika kita melihat isi file ini (di dalam blok http) Anda akan melihat dua baris berikut:


sertakan /etc/nginx/conf.d/*.konf;
sertakan /etc/nginx/sites-enabled/*;

Baris kedua mencakup semua file di direktori yang mendukung situs ke konfigurasi Nginx. Ini adalah praktik standar pada sebagian besar distribusi berbasis Debian. Misalnya halaman web "Selamat datang di Nginx" default memiliki file yang sesuai bernama default di lokasi /etc/nginx/sites-available/default dengan symlink ke /etc/nginx/sites-enabled/, tetapi kami tidak memerlukan ini halaman web default sehingga kami dapat menghapus symlink dengan aman. Yang asli masih tersedia di direktori situs-tersedia.

$ rm /etc/nginx/sites-enabled/default

Tetapi ketika kita akan membuat konfigurasi proxy terbalik, kita akan melakukannya di conf.d direktori (dengan nama file kami memiliki a .ekstensi conf) ini universal, dan bekerja di semua distribusi bukan hanya Debian atau Ubuntu.

Menghapus konfigurasi default untuk distro lain

Jika Anda tidak menggunakan distro berbasis Debian, Anda akan menemukan default Halaman Selamat Datang konfigurasi di /etc/nginx/conf.d/default.conf cukup pindahkan file ke tempat yang aman jika Anda ingin menggunakannya di masa mendatang (karena ini bukan symlink)

$mv /etc/nginx/conf.d/default.conf ~/default.konf

Kadang-kadang dapat ditemukan di /etc/nginx/default.d karena orang tidak bisa menyetujui satu standar sederhana! Jadi, Anda harus melakukan sedikit penggalian di direktori /etc/nginx, untuk mengetahuinya.

Menambahkan Blok Proxy Terbalik

Seperti yang dinyatakan sebelumnya, dua nama domain berbeda yang saya hosting di belakang proxy ini adalah

  1. ranvirslog.com (SITUS WEB 1) dengan IP 10.135.123.183
  2. ranvirslog.com (SITUS WEB 2) dengan IP 10.135.123.186

Jadi mari kita buat satu file per situs web di /etc/nginx/conf.d/ folder. Jadi kami terorganisir dengan baik.

$ sentuh /etc/nginx/conf.h/ww1.konf
$ sentuh /etc/nginx/conf.h/ww2.konf

Anda dapat memberi nama file apa pun yang Anda inginkan, asalkan memiliki .conf di akhir namanya.

Dalam file pertama ww1.conf tambahkan baris berikut:

server
mendengarkan 80;
dengarkan [::]:80;
 
nama_server ww1.ranvirslog.com;
 
lokasi /
proxy_pass http://10.135.123.183/;
proxy_buffering mati;
proxy_set_header X-Real-IP $remote_addr;

Pernyataan mendengarkan memberitahu Nginx untuk mendengarkan pada port 80 untuk kedua kasus IPv4 dan IPv6. Kemudian memeriksa apakah server_name adalah ww1.ranvirslog.com kemudian blok lokasi masuk dan mem-proxy permintaan ke http://10.135.123.183/ dengan buffering dimatikan. Selain itu, baris proxy_set_header… memastikan bahwa IP asli klien diteruskan ke server proxy. Ini berguna jika Anda ingin menghitung jumlah pengunjung unik, dll. Jika tidak, server proxy hanya akan memiliki satu pengunjung - server Nginx.

Opsi buffering dan opsi set_header sepenuhnya opsional dan hanya ditambahkan untuk membuat proxy setransparan mungkin. Untuk ww2.ranvirslog.com, saya menambahkan konfigurasi berikut di /etc/nginx/conf.h/ww2.konf:

server
mendengarkan 80;
dengarkan [::]:80;
 
nama_server ww2.ranvirslog.com;
 
lokasi /
proxy_pass http://10.135.123.186/;
proxy_buffering mati;
proxy_set_header X-Real-IP $remote_addr;

Simpan kedua file dan uji apakah konfigurasi keseluruhan valid atau tidak:

$ sudo nginx -t

Jika ada kesalahan, output dari perintah di atas akan membantu Anda menemukan dan memperbaikinya. Sekarang restart server:

$ layanan nginx restart

Dan Anda dapat menguji apakah itu berhasil atau tidak dengan mengunjungi nama domain yang berbeda di browser Anda dan melihat hasilnya.

Kesimpulan

Kasus penggunaan setiap individu berbeda. Konfigurasi yang disebutkan di atas mungkin perlu sedikit penyesuaian agar sesuai dengan skenario Anda. Mungkin Anda menjalankan beberapa server pada host yang sama, tetapi pada port yang berbeda, dalam hal ini baris proxy_pass… akan memiliki http://localhost:portNumber/ sebagai nilainya.

Detail ini sangat bergantung pada kasus penggunaan Anda. Untuk detail lebih lanjut tentang opsi dan tuneable lain, lihat dokumen resmi Nginx.

Alat Berguna untuk Gamer Linux
Jika Anda suka bermain game di Linux, kemungkinan besar Anda telah menggunakan aplikasi dan utilitas seperti Wine, Lutris, dan OBS Studio untuk mening...
Game Remaster HD untuk Linux yang Belum Pernah Rilis Linux Sebelumnya
Banyak pengembang dan penerbit game datang dengan remaster HD dari game lama untuk memperpanjang umur waralaba, harap penggemar meminta kompatibilitas...
Cara Menggunakan AutoKey untuk Mengotomatiskan Game Linux
AutoKey adalah utilitas otomatisasi desktop untuk Linux dan X11, diprogram dengan Python 3, GTK dan Qt. Dengan menggunakan skrip dan fungsionalitas MA...