tengine + lua 实现流量拷贝
环境搭建参考地址:http://www.cnblogs.com/cp-miao/p/7505910.html
cp.lua
local res1, res2, action action = ngx.var.request_method if action == "POST" then arry = {method = ngx.HTTP_POST, body = ngx.req.read_body()} else arry = {method = ngx.HTTP_GET} end if ngx.var.svr == "on" then res1, res2 = ngx.location.capture_multi { { "/copynode" .. ngx.var.request_uri , arry}, } else ngx.exec("@hubnode") end ngx.exec("@hubnode")
cp.conf
upstream hubnode { server 127.0.0.1:3001 weight=1; } upstream cpnode { server 127.0.0.1:9031; } server { listen 443; server_name aa.cn; ssl on; ssl_certificate /etc/ssl/private/all_a.pem; ssl_certificate_key /etc/ssl/private/all_a.pem; location ~* ^/copynode { log_subrequest on; rewrite ^/copynode(.*)$ $1 break; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://cpnode; #access_log logs/test-upstream.log main; } location @hubnode{ proxy_pass http://hubnode; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location / { client_body_buffer_size 2m; set $svr "on"; #开启或关闭copy功能 content_by_lua_file "/nas/config/tengine/lua/t.lua"; } access_log /var/log/tengine/np.log access; }