Maison > Opération et maintenance > Nginx > le corps du texte

Comment utiliser le proxy inverse Nginx et l'équilibrage de charge pour créer un environnement de test multi-personnes

PHPz
Libérer: 2023-05-23 17:29:47
avant
1190 Les gens l'ont consulté

Principe de mise en œuvre

Lorsque nous visitons un site Web, il y aura un en-tête d'agent utilisateur dans l'en-tête de la requête, tel que mozilla/5.0 (macintosh ; intel mac os x 10.12 ; rv:50.0) gecko/20100101 firefox/50.0 , cet ua peut être personnalisé, et de nombreux plug-ins de navigateur prennent également en charge l'ajout d'ua personnalisé, comme le plug-in swicher de l'agent utilisateur de Firefox.

Comment utiliser le proxy inverse Nginx et léquilibrage de charge pour créer un environnement de test multi-personnes

Comme le montre l'image, un ua personnalisé a été ajouté ici et le contenu a été modifié par votre propre nom. En demandant le site Web via cet ua, nous pouvons voir dans l'en-tête de la demande que l'ua est devenu. le nôtre, qui est un identifiant.

Selon cet ua, il est jugé par nginx. Différents ua sont transmis à différents ports, et chaque port correspond à un répertoire de site Web.

nginx détermine ua

Grâce à nginx, vous pouvez obtenir l'ua de chaque requête, c'est-à-dire la variable $http_user_agent.

Par exemple, dans le champ d'emplacement, vous pouvez juger ua et définir un drapeau comme celui-ci :

if ( $http_user_agent ~ "dashen" ) {
 set $flag "01";
}
Copier après la connexion

Par exemple, si vous jugez que le contenu de ua est en tiret et définissez $flag sur 01, vous pouvez définir plusieurs de ces drapeaux .

Proxy inverse nginx et équilibrage de charge

En jugeant différents uAs, nous pouvons transférer vers différentes machines et ports via des proxys inverses. Ici, la même machine de test peut transférer vers différents ports de cette machine et écouter différents paramètres de port pour différents. répertoires de sites Web.

Les détails sont les suivants :

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;
  }
 }
}
Copier après la connexion

Cette configuration inversera le proxy de différentes requêtes ua vers différents serveurs d'équilibrage de charge. Voir la configuration spécifique d'équilibrage de charge ci-dessous.

Configuration d'équilibrage de charge nginx

Plusieurs configurations d'équilibrage de charge sont définies ici. Chaque configuration d'équilibrage de charge n'est en fait configurée qu'avec une seule machine, c'est-à-dire différents ports de la machine locale.

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;
}
Copier après la connexion

Donc, ce n'est pas encore fini. Ce que vous devez faire ensuite est de configurer plusieurs hôtes virtuels nginx comme un site Web normal. La différence est que vous devez écouter plusieurs ports différents, vous avez donc besoin de plusieurs configurations d'hôtes virtuels. juste que le répertoire du site Web est différent. Par exemple, si ua est dashen, le répertoire du site Web correspondant est /vhosts/example.com/dashen Si ua est mianwo, le répertoire du site Web correspondant est /vhosts/example.com/mianwo. .

De cette façon, différents testeurs extraient les branches du répertoire du site Web correspondant à leur propre ua et configurent leur propre ua via le plug-in du navigateur. Cela permet à plusieurs personnes d'extraire différentes branches sur une machine en même temps. , et accédez au même nom de domaine. Selon l'UA, les répertoires racine du site Web sont séparés et ne s'influencent pas.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal