>백엔드 개발 >PHP 튜토리얼 >Nginx 복사 트래픽

Nginx 복사 트래픽

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-07-29 08:51:211363검색
Ngnix를 사용하여 온라인 트래픽을 테스트 머신에 복사합니다(하나의 http 요청은 하나의 트래픽으로 간주됩니다)
개발 환경: CentOS 6.4
nginx 설치 디렉터리: /usr/local/nginx-1.4.2
각 모듈 설치 패키지 다운로드 디렉터리: /data/nginxinstall
1. pcre 설치
#yum -y install pcre pcre-devel
2. zlib 설치
yum -y install zlib zlib- 개발
3. LuaJIT 설치
# cd /data/nginxinstall
# wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz
# tar -xzvf LuaJIT- 2.0.2.tar.gz
# cd LuaJIT-2.0.2
# make
lib 및 include는 /usr/local/lib 및 usr/local/include
환경 변수 구성에 직접 배치됩니다.
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
4. httpLuaModule
# cd /data/nginxinstall
# wget https://github.com/chaoslawful/lua-nginx-module/archive/v0.8.6.tar.gz
# tar -xzvf v0.8.6
5. 아래에서 Nginx 설치를 시작하세요(nginx1.10.0을 사용하려고 하면 컴파일 오류가 발생함):
# cd /data/nginxinstall/
# wget http://nginx.org/download/nginx-1.4 .2 .tar.gz
# tar -xzvf nginx-1.4.2.tar.gz
# cd nginx-1.4.2
# ./configure --prefix=/usr/local/nginx- 1.4.2 --add-module=../lua-nginx-module-0.8.6
# make -j2
# make install
6. nginx/conf/nginx.conf 파일을 편집합니다( 이 파일은 트리로 간주될 수 있는 json 형식입니다.
http 노드 아래에 추가합니다.
upstream online {
       server 10.10.12.7:80;
}
  upstream test {
server 10.10.10.103:80;
}

위치 추가 ~* ^/antispam {
client_body_buffer_size 2m;
set $svr "on"; 복사 기능
content_by_lua_file copy_flow.lua;
}
위치 ~* ^/online {
log_subrequest on;
rewrite ^/s1(.*)$ $1 break;
Proxy_pass http ://s1; -- 역방향 프록시, 온라인 업스트림으로 이동
}
위치 ~* ^/test {
log_subrequest on;
rewrite ^/test(.*)$ $1 break;
proxy_pass http://test; -- 역방향 프록시, 업스트림 테스트로 이동
}
7. nginx/copy_flow.lua 파일 편집:
local online, test, action
action = ngx .var.request_method
if action == "POST" then
ngx.req.read_body() -- 본문 매개변수 local arg = ngx를 구문 분석하기 전에 본문
을 읽어보세요. -- 게시하려면 매개변수가 전달되어야 합니다.
arry = {method = ngx.HTTP_POST, body = ngx.var.request_body, args=arg}
else
arry = {method = ngx.HTTP_GET }
end
if ngx.var.svr == "on" then
online, test = ngx.location.capture_multi {
{ "/online" .. ngx.var.request_uri, arry },
{ "/test" .. ngx.var.request_uri, arry},
}
else
online = ngx.location.capture_multi {
{ "/online" .. ngx.var .request_uri, arry}
}
end
if online.status == ngx.HTTP_OK then -- 온라인 서버의 결과만 반환
ngx.say(online.body)
else
ngx.status = ngx.HTTP_NOT_FOUND

end

8 POST 매개변수에 중국어가 있습니다. 인코딩 문제가 있습니다.

Nginx 구성 UTF8: 서버 노드 아래에 charset utf-8 구성;

tomcat 구성 URL 인코딩 형식:


위에서 내용의 측면을 포함하여 Nginx 복사 트래픽을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.