Nginx

Proksi Berbalik Nginx

Proksi Berbalik Nginx

Apa itu proksi terbalik?

Pelayan proksi adalah yang bercakap dengan Internet bagi pihak anda. Contohnya, jika rangkaian kolej anda telah menyekat https: // www.facebook.com / tetapi domain https: // contohproksi.com masih boleh diakses, maka anda boleh mengunjungi yang terakhir dan ia akan meneruskan semua permintaan anda untuk pelayan Facebook ke Facebook, dan menghantar dengan respons dari Facebook kembali ke penyemak imbas anda.

Untuk merakam, proksi menghantar permintaan atas nama salah satu daripada lebih banyak pelanggan ke pelayan mana pun di Internet. Proksi terbalik berkelakuan serupa.

A proksi terbalik menerima permintaan daripada mana-mana dan semua pelanggan atas nama satu atau lebih pelayan. Oleh itu, jika anda mempunyai beberapa pelayan hosting ww1.contoh.com dan ww2.contoh.com pelayan proksi terbalik dapat menerima permintaan bagi pihak kedua pelayan, meneruskan permintaan tersebut ke titik akhir masing-masing di mana respons dihasilkan dan dihantar kembali ke proksi terbalik untuk diteruskan kembali kepada pelanggan.

Persediaan

Sebelum kita mula mengubah fail konfigurasi Nginx dan membuat pelayan proksi terbalik. Saya ingin menetapkan seperti apa persediaan saya, jadi ketika anda berusaha untuk melaksanakan reka bentuk anda, itu akan menjadi lebih membingungkan.

Saya menggunakan platform DigitalOcean untuk menjana tiga VPS. Mereka semua berada di rangkaian yang sama masing-masing dengan IP Peribadinya sendiri, dan hanya satu VPS yang mempunyai IP awam statik (Ini akan menjadi pelayan proksi terbalik kami.)

VM / Nama Hos IP persendirian IP awam Peranan
Reverseproxy 10.135.123.187 159.89.108.14 Proksi terbalik, menjalankan Nginx
Nod-1 10.135.123.183 N / A Menjalankan laman web pertama
Nod-2 10.135.123.186 N / A Menjalankan laman web kedua

Dua laman web yang berlainan mempunyai nama domain ww1.ranvirslog.com dan ww2.ranvirslog.com dan kedua-dua rekod A mereka menunjukkan IP awam terbalik, i.e, 159.89.108.14

Idea di sebalik IP persendirian adalah bahawa, ketiga-tiga VM dapat bercakap antara satu sama lain melalui IP peribadi ini, tetapi pengguna jarak jauh hanya dapat mengakses VM proksi terbalik di IP Awamnya. Ini penting untuk diingat. Sebagai contoh, anda tidak dapat memasukkan VM mana pun menggunakan IP Peribadinya.

Selanjutnya, kedua Node-1 dan Node-2 mempunyai pelayan web Apache yang melayani dua halaman web yang berbeza. Ini akan membantu kita membezakan antara satu sama lain.

Laman web pertama bertuliskan “WEBSITE 1 WORKS!!!"

Begitu juga dengan laman web kedua yang menunjukkan:

Laman web anda mungkin berbeza, tetapi jika anda ingin mereplikasi persediaan ini sebagai titik permulaan, jalankan apt apache2 pada Node-1 dan Node-2. Kemudian edit fail / var / www / html / index.html supaya pelayan web mengatakan apa sahaja yang anda mahukan.

VM reverseproxy masih belum disentuh. Semua VM menjalankan Ubuntu 18.04 LTS, tetapi anda bebas menggunakan OS lain yang anda mahukan. Anda juga boleh mencontohinya menggunakan bekas Docker. Dengan membuat rangkaian jambatan Docker yang ditentukan pengguna dan menampung kontainer di atasnya, anda boleh menetapkan setiap wadah IP peribadi dan meneruskan semua proksi HTTP / HTTPS ke satu kontena, yang akan menjadi bekas proksi terbalik Nginx.

Setakat ini begitu baik.

Konfigurasi Lalai Nginx

Mari kita mulakan dengan memasang Nginx ke pelayan reverseeproxy, saya menggunakan Ubuntu jadi ia adalah pengurus pakej saya:

$ sudo apt memasang nginx

Mengalih keluar konfigurasi lalai jika anda menggunakan pengedaran berasaskan Debian

Sebelum kita melangkah lebih jauh nota kecil mengenai konfigurasi Nginx. Semua pelbagai fail konfigurasi disimpan di / etc / nginx termasuk nginx.fail conf yang merupakan fail konfigurasi utama. Sekiranya kita melihat kandungan fail ini (di dalam blok http) anda akan melihat dua baris berikut:


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

Baris kedua merangkumi semua fail dalam direktori diaktifkan laman web untuk konfigurasi Nginx. Ini adalah amalan biasa pada sebilangan besar pengedaran berasaskan Debian. Contohnya halaman web "Selamat Datang di Nginx" lalai mempunyai fail yang sesuai bernama lalai di lokasi / etc / nginx / sites-available / default dengan symlink ke / etc / nginx / sites-enabled /, tetapi kami tidak memerlukan ini laman web lalai sehingga kita dapat membuang symlink dengan selamat. Yang asli masih boleh didapati di direktori yang tersedia di laman web.

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

Tetapi apabila kita akan membuat konfigurasi proksi terbalik, kita akan melakukannya dalam konfigurasi.d direktori (dengan nama fail kami mempunyai .sambungan conf) ini universal, dan berfungsi di semua pengedaran bukan hanya Debian atau Ubuntu.

Mengalih keluar konfigurasi lalai untuk distro lain

Sekiranya anda tidak menggunakan distro berasaskan Debian, anda akan menemui lalai Halaman Selamat Datang konfigurasi di / etc / nginx / conf.d / lalai.conf pindahkan fail ke tempat yang selamat sekiranya anda ingin menggunakannya pada masa akan datang (kerana ini bukan symlink)

$ mv / etc / nginx / conf.d / lalai.conf ~ / lalai.pengesahan

Kadang-kadang ia boleh didapati di / etc / nginx / default.d kerana orang tidak boleh bersetuju dengan satu standard sederhana! Oleh itu, anda perlu melakukan penggalian di direktori / etc / nginx, untuk mengetahui perkara ini.

Menambah Blok Proksi Berbalik

Seperti yang dinyatakan sebelum ini, dua nama domain berbeza yang saya hosting di sebalik proksi ini

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

Oleh itu mari buat satu fail setiap laman web di / etc / nginx / conf.d / folder. Oleh itu kita teratur.

$ sentuh / etc / nginx / conf.d / ww1.pengesahan
$ sentuh / etc / nginx / conf.d / ww2.pengesahan

Anda boleh menamakan fail apa sahaja yang anda mahu, asalkan mempunyai .conf pada akhir namanya.

Dalam fail pertama ww1.conf tambahkan baris berikut:

pelayan
dengar 80;
dengar [::]: 80;
 
pelayan_nama ww1.ranvirslog.com;
 
lokasi /
proxy_pass http: // 10.135.123.183 /;
proxy_buffering dimatikan;
proxy_set_header X-Real-IP $ remote_addr;

Pernyataan mendengar memberitahu Nginx untuk mendengar di port 80 untuk kedua-dua kes IPv4 dan IPv6. Ia kemudian memeriksa apakah nama_pengguna adalah ww1.ranvirslog.kemudian blok lokasi bermula dan memberi proksi permintaan ke http: // 10.135.123.183 / dengan buffering dimatikan. Lebih-lebih lagi, baris proxy_set_header ... memastikan bahawa IP asal pelanggan diteruskan ke pelayan yang diproksi. Ini berguna sekiranya anda ingin mengira jumlah pelawat unik, dll. Jika tidak, pelayan proksi hanya mempunyai satu pelawat - pelayan Nginx.

Pilihan penyangga dan pilihan set_header benar-benar opsional dan hanya ditambahkan untuk menjadikan proksi sebening mungkin. Untuk ww2.ranvirslog.laman web com, saya menambahkan konfigurasi berikut di / etc / nginx / conf.d / ww2.konfigurasi:

pelayan
dengar 80;
dengar [::]: 80;
 
pelayan_nama ww2.ranvirslog.com;
 
lokasi /
proxy_pass http: // 10.135.123.186 /;
proxy_buffering dimatikan;
proxy_set_header X-Real-IP $ remote_addr;

Simpan kedua-dua fail dan uji apakah keseluruhan konfigurasi itu sah atau tidak:

$ sudo nginx -t

Sekiranya terdapat kesilapan, output arahan di atas akan membantu anda mencari dan memperbaikinya. Sekarang mulakan semula pelayan:

$ servis semula nginx

Dan anda boleh menguji sama ada ia berfungsi atau tidak dengan melawat pelbagai nama domain di penyemak imbas anda dan melihat hasilnya.

Kesimpulannya

Kes penggunaan setiap individu berbeza. Konfigurasi yang disebutkan di atas mungkin memerlukan sedikit penyesuaian untuk berfungsi untuk senario anda. Mungkin anda menjalankan banyak pelayan pada hos yang sama, tetapi di port yang berlainan, dalam hal ini baris proxy_pass… akan mempunyai http: // localhost: portNumber / sebagai nilainya.

Perincian ini sangat bergantung pada kes penggunaan anda. Untuk maklumat lebih lanjut mengenai pilihan dan lagu lain, lihat dokumen Nginx rasmi.

OpenTTD vs Simutrans
Membuat simulasi pengangkutan anda sendiri boleh menyeronokkan, santai dan sangat menarik. Itulah sebabnya anda perlu memastikan bahawa anda mencuba s...
Tutorial OpenTTD
OpenTTD adalah salah satu permainan simulasi perniagaan yang paling popular di luar sana. Dalam permainan ini, anda perlu membuat perniagaan pengangku...
SuperTuxKart untuk Linux
SuperTuxKart adalah tajuk hebat yang direka untuk membawa anda pengalaman Mario Kart secara percuma pada sistem Linux anda. Ia cukup mencabar dan meny...