Nginx 역방향 프록시 및 로드 밸런싱을 사용하여 다중 사용자 테스트 환경을 구축하는 방법

PHPz
풀어 주다: 2023-05-23 17:29:47
앞으로
1190명이 탐색했습니다.

구현 원칙

웹사이트를 방문하면 요청 헤더에 사용자 에이전트 헤더가 있습니다. 예: mozilla/5.0 (macintosh; intel mac os x 10.12; rv:50.0) gecko/20100101 firefox/50.0 , 이 UA는 사용자 정의할 수 있으며 많은 브라우저 플러그인도 Firefox의 사용자 에이전트 전환 플러그인과 같은 사용자 정의 UA 추가를 지원합니다.

Nginx 역방향 프록시 및 로드 밸런싱을 사용하여 다중 사용자 테스트 환경을 구축하는 방법

사진과 같이 여기에 Custom UA가 추가되었으며, 해당 UA를 통해 웹사이트에 요청하면 UA가 변경되었음을 확인할 수 있습니다. 우리 자신의 식별자입니다.

이 ua에 따르면 nginx에 의해 판단됩니다. 서로 다른 ua는 서로 다른 포트로 전달되며 각 포트는 웹사이트 디렉터리에 해당합니다.

nginx는 ua를 결정합니다

nginx를 사용하면 각 요청의 ua, 즉 $http_user_agent 변수를 얻을 수 있습니다.

예를 들어 location 필드에서 ua를 판단하고 다음과 같이 플래그를 설정할 수 있습니다.

if ( $http_user_agent ~ "dashen" ) {
 set $flag "01";
}
로그인 후 복사

예를 들어 ua의 내용이 dashen이라고 판단하고 $flag를 01로 설정하면 이러한 플래그를 많이 설정할 수 있습니다. .

nginx 역방향 프록시 및 로드 밸런싱

다른 uA를 판단하여 역방향 프록시를 통해 다른 시스템과 포트로 전달할 수 있습니다. 여기서 동일한 테스트 시스템은 이 시스템의 다른 포트로 전달하고 서로 다른 포트 설정을 수신할 수 있습니다. 웹사이트 디렉토리.

자세한 내용은 다음과 같습니다.

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;
  }
 }
}
로그인 후 복사

이 구성은 다른 ua 요청을 다른 로드 밸런싱 서버로 역방향으로 프록시합니다. 아래의 특정 로드 밸런싱 구성을 참조하세요.

nginx 로드 밸런싱 구성

여기에는 여러 로드 밸런싱 구성이 정의되어 있습니다. 각 로드 밸런싱 구성은 실제로 하나의 머신, 즉 로컬 머신의 다른 포트로만 구성됩니다.

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;
}
로그인 후 복사

아직 끝나지 않았습니다. 다음으로 해야 할 일은 일반 웹사이트처럼 여러 개의 nginx 가상 호스트를 구성해야 한다는 점입니다. 따라서 여러 개의 가상 호스트 구성이 필요합니다. 예를 들어 ua가 dashen인 경우 해당 웹 사이트 디렉터리는 /vhosts/example.com/dashen입니다. ua가 mianwo인 경우 해당 웹 사이트 디렉터리는 /vhosts/example.com/mianwo입니다. .

이런 방식으로 테스터는 자신의 ua에 해당하는 웹사이트 디렉터리에서 분기를 가져오고 브라우저 플러그인을 통해 자신의 ua를 구성합니다. 이를 통해 여러 사람이 동시에 한 컴퓨터에서 서로 다른 분기를 가져올 수 있습니다. , 동일한 도메인 이름에 액세스합니다. ua에 따라 웹 사이트 루트 디렉터리가 분리되어 서로 영향을 미치지 않습니다.

위 내용은 Nginx 역방향 프록시 및 로드 밸런싱을 사용하여 다중 사용자 테스트 환경을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿