구현 원칙
웹사이트를 방문하면 요청 헤더에 사용자 에이전트 헤더가 있습니다. 예: mozilla/5.0 (macintosh; intel mac os x 10.12; rv:50.0) gecko/20100101 firefox/50.0 , 이 UA는 사용자 정의할 수 있으며 많은 브라우저 플러그인도 Firefox의 사용자 에이전트 전환 플러그인과 같은 사용자 정의 UA 추가를 지원합니다.
사진과 같이 여기에 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!