Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Cara menggunakan proksi terbalik Nginx dan pengimbangan beban untuk membina persekitaran ujian berbilang orang

Cara menggunakan proksi terbalik Nginx dan pengimbangan beban untuk membina persekitaran ujian berbilang orang

PHPz
PHPzke hadapan
2023-05-23 17:29:471184semak imbas

Prinsip pelaksanaan

Apabila kita melawati tapak web, akan ada pengepala ejen pengguna dalam pengepala permintaan, seperti mozilla/5.0 (macintosh; intel mac os x 10.12; rv: 50.0) gecko/20100101 firefox/50.0, ua ini boleh disesuaikan, dan banyak pemalam penyemak imbas turut menyokong penambahan ua tersuai, seperti pemalam swicher ejen pengguna Firefox.

Cara menggunakan proksi terbalik Nginx dan pengimbangan beban untuk membina persekitaran ujian berbilang orang

Seperti yang ditunjukkan dalam gambar, ua tersuai ditambah di sini, dan kandungannya ditukar kepada nama anda sendiri Melalui laman web permintaan ua ini, kita boleh melihat ua di tajuk permintaan Ia menjadi milik anda, ini adalah logo.

Menurut ua ini, ia dinilai oleh nginx Ua yang berbeza dimajukan ke port yang berbeza, dan setiap port sepadan dengan direktori tapak web.

nginx menentukan ua

Melalui nginx, anda boleh mendapatkan ua bagi setiap permintaan, iaitu pembolehubah $http_user_agent.

Sebagai contoh, dalam medan lokasi, anda boleh menilai ua dan menetapkan bendera seperti ini:

if ( $http_user_agent ~ "dashen" ) {
 set $flag "01";
}

Sebagai contoh, jika anda menilai bahawa kandungan ua adalah sengkang dan tetapkan $flag kepada 01, anda boleh menetapkan banyak bendera sedemikian.

proksi terbalik nginx dan pengimbangan beban

Dengan menilai ua yang berbeza, kami boleh memajukan ke mesin dan port yang berbeza melalui proksi terbalik, berikut adalah mesin ujian yang sama Anda boleh memajukan ke port yang berbeza pada mesin tempatan, dengarkan port yang berbeza dan sediakan direktori tapak web yang berbeza.

Butirannya adalah seperti berikut:

server
{
 listen 192.168.1.251:80;
 server_name *.example.com;
 index index.html index.htm index.php;
 charset utf-8;
 location / {
 set $flag "00";
 if ( $http_user_agent ~ "dashen" ) {
   set $flag "01";
  }
 if ( $http_user_agent ~ "mianwo" ) {
   set $flag "02";
  }
 if ( $http_user_agent ~ "bingkuai" ) {
   set $flag "03";
  }
 if ( $http_user_agent ~ "hadoop" ) {
   set $flag "04";
  }
  proxy_set_header host $host;
  proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
  if ( $flag = "00" ){
   add_header z-server mobile;
   proxy_pass http://webserver_mobile;
  }
  if ( $flag = "01" ){
   add_header z-server dashen;
   proxy_pass http://webserver_dashen;
  }
  if ( $flag = "02" ){
   add_header z-server mianwo;
   proxy_pass http://webserver_mianwo;
  }
  if ( $flag = "03" ){
   add_header z-server bingkuai;
   proxy_pass http://webserver_bingkuai;
  }
  if ( $flag = "04" ){
   add_header z-server hadoop;
   proxy_pass http://webserver_hadoop;
  }
 }
}

Konfigurasi ini akan membalikkan permintaan ua yang berbeza kepada pelayan pengimbangan beban yang berbeza Lihat konfigurasi pengimbangan beban khusus di bawah.

konfigurasi pengimbangan beban nginx

Beberapa konfigurasi pengimbangan beban ditakrifkan di sini Setiap konfigurasi pengimbangan beban sebenarnya hanya dikonfigurasikan dengan satu mesin, iaitu perbezaan antara tempatan mesin dan pelabuhan.

upstream webserver_mobile{
 server 127.0.0.1:8900 max_fails=2 weight=2 fail_timeout=10s;
}
upstream webserver_dashen{
 server 127.0.0.1:8901 max_fails=2 weight=2 fail_timeout=10s;
}
upstream webserver_mianwo{
 server 127.0.0.1:8902 max_fails=2 weight=2 fail_timeout=10s;
}
upstream webserver_bingkuai{
 server 127.0.0.1:8903 max_fails=2 weight=2 fail_timeout=10s;
}
upstream webserver_hadoop{
 server 127.0.0.1:8904 max_fails=2 weight=2 fail_timeout=10s;
}

Nah, perkara yang perlu anda lakukan seterusnya ialah mengkonfigurasi berbilang hos maya nginx seperti tapak web biasa. Perbezaannya ialah anda perlu mendengar beberapa port yang berbeza konfigurasi, hanya direktori tapak web yang berbeza Contohnya, jika ua adalah dashen, direktori tapak web yang sepadan ialah /vhosts/example.com/dashen Jika ua ialah mianwo, direktori tapak web yang sepadan ialah /vhosts/example.com/. mianwo.

Dengan cara ini, penguji berbeza boleh menarik cawangan dalam direktori tapak web yang sepadan dengan ua mereka sendiri, dan mengkonfigurasi ua mereka sendiri melalui pemalam penyemak imbas, sekali gus membolehkan berbilang orang menarik cawangan berbeza pada satu mesin pada masa yang sama, dan Apabila mengakses nama domain yang sama, direktori akar tapak web dipisahkan mengikut ua yang berbeza, dan tidak menjejaskan satu sama lain.

Atas ialah kandungan terperinci Cara menggunakan proksi terbalik Nginx dan pengimbangan beban untuk membina persekitaran ujian berbilang orang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam