Gor 流量复制实战

1 需求背景

  把prd环境某个域名下的某个post url访问流量复制到stg环境中的机器上,不过在stg环境中访问的post url已经和prd的不一样了,但是后端处理程序是可以处理这种变化的。

####  例如:

prd: http://www.example.com/pc_session.php  -->  stg: http://www.test.com/bd-blink-server/asynctapi/PC-session

2 难点

####  1 在众多url中只复制某一个的url的访问流量,在单机的www.example.com下面有几十个api接口,只复制pc_session.php接口的流量,tcpcopy排除。 ####  2 流量复制到stg环境后,stg的服务接口变了,并不是从prd复制过来的url接口访问格式。 ####  3 整个流量复制是要获取post的值,不是get的值,rewrite方式排除,rewrite到外部域名只能传递get数据,rewrite到内部域名是可以传递post参数的。

3 方案

####  Gor+nginx(nginx_proxy)来实现。 ####  1 Gor通过http method匹配post方式的请求,通过url匹配来获取指定的url。 ####  2 nginx location精确匹配要过滤的url,通过nginx_proxy代理到固定的url上面。

4 实施

####  1 prd:bd-prd-nginx-174机器运行gor复制流量

gor5 --input-raw :80 --output-http http://10.203.80.53:80  --http-allow-method POST --http-set-header 'User-Agent: Gor' -http-allow-url pc_session.php

如图

####  2 stg:bd-stg-api-53机器配置nginx

server {
        listen       10.203.80.53:80;
        access_log   logs/stg-bdgblog.eastmoney.com-access.log main;
        error_log    logs/stg-bdgblog.eastmoney.com-error.log;


        location / {
                if ( $uri !~ /pc_session.php$ ) {
                        return 503;
                }
        }

        location  = /pc_session.php {
                proxy_pass http://10.203.80.52:8000/bd-blink-server/asynctapi/PC-session;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
                access_log   logs/pc-session_access.log main;
                error_log    logs/pc-session_error.log;
}

如图

####  3 stg:bd-stg-api-52 查看后端处理逻辑是否收到数据 如图

转载于:https://my.oschina.net/guol/blog/700563

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值