• Nginx进行流量copy到测试环境


    Nginx进行流量copy到测试环境

    四月 1, 2012 by 风的尾巴 · Leave a Comment 

    经常会遇到测试环境需要一些数据,当然你可以自己仿造数据,但是更方便和更好的做法是,将来自正式环境的用户请求copy一份到测试环境。

    依赖模块lua-nginx-module,ngx_devel_kit, headers-more-nginx-module

    以上模块在github上均可以找到,作者是国内nginx的著名开发者agentzh。

    使用模块需要重新编译nginx,  –add-module=/path/to/your/module

    下面是nginx配置:

    >>cat copy_req.lua

    local res1, res2, action
    action = ngx.var.request_method
    if action == “POST” then
    arry = {method = ngx.HTTP_POST, body = request_body}
    else
    arry = {method = ngx.HTTP_GET}
    end

    if ngx.var.svr == “on” then
    res1, res2 = ngx.location.capture_multi {
    { “/s1″ .. ngx.var.request_uri , arry},
    { “/test” .. ngx.var.request_uri , arry},
    }
    else
    res1, res2 = ngx.location.capture_multi {
    { “/s1″ .. ngx.var.request_uri , arry},
    }
    end

    if res1.status == ngx.HTTP_OK then
    local header_list = {“Content-Length”, “Content-Type”, “Content-Encoding”, “Accept-Ranges”}
    for _, i in ipairs(header_list) do
    if res1.header[i] then
    ngx.header[i] = res1.header[i]
    end
    end
    ngx.say(res1.body)
    else
    ngx.status = ngx.HTTP_NOT_FOUND
    end

    >>cat   nginx.conf

    ……..

    location ~* ^/s1 {
    log_subrequest on;
    rewrite ^/s1(.*)$ $1 break;
    proxy_pass http://s1;
    access_log /opt/logs/nginx/youni/upstream.log;
    }

    location ~* ^/test {
    log_subrequest on;
    rewrite ^/test(.*)$ $1 break;
    proxy_pass http://test;

    access_log /opt/logs/nginx/youni/upstream.log;

    }

    location ~* ^/(.*)$ {
    client_body_buffer_size 2m;
    set $svr     “on”;               #开启或关闭copy功能

    content_by_lua_file    req_fenliu.lua;
    }

     

    upstream s1 {

    server  x.x.x.x;

    }

    upstream test {

    server  xx.xx.xx.xx;

    }

    ……

    其中的nginx.conf内的http,server域我没有放上来了。依照自己的配置即可.

    完.

  • 相关阅读:
    Cookie数据的编码及解码
    删除单链表节点,时间复杂度为O(1)
    匹配URL
    C#文本框允许使用ctrl+A
    实现统计一个字符串所含的不同字符的总数
    调用win32 api 函数SendMessage() 实现消息直接调用
    关于C++的const对象
    从一个文本文件中找出使用频率最高的五个字符
    C++基础中的基础(深拷贝与浅拷贝)
    python+Django CRM客户关系管理系统开发(十)--左右移动选择框功能开发
  • 原文地址:https://www.cnblogs.com/lexus/p/2434290.html
Copyright © 2020-2023  润新知