nginx mirror/post_action+gor实现https流量复制
个人学习笔记,谢绝转载!!!
原文:https://www.cnblogs.com/wshenjin/p/11850386.html
关于gor:
参考:
https://www.cnblogs.com/jinjiangongzuoshi/p/11773070.html
https://github.com/buger/goreplay/wiki/Getting-Started
这篇小记主要是记录gor不支持https流量镜像的一种解决思路

https流量镜像
1、在nginx proxy 配置 post_action(或者mirror),实现https流量镜像出http流量到gor
server
{
listen 80;
listen 443;
server_name tt.example.com;
index index.html index.php;
root /data/web/webclose;
location / {
expires off;
proxy_redirect off;
proxy_set_header Host tt.example.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://1.1.1.1:443;
#配置post_action
post_action @tt_http;
#或者配置mirror
mirror /mirror;
mirror_request_body on; #指定是否镜像请求body部分,此选项与proxy_request_buffering、fastcgi_request_buffering、scgi_request_buffering和 uwsgi_request_buffering冲突,一旦开启mirror_request_body,则请求自动缓存;
}
#mirror
location /mirror {
internal; #指定此location只能被“内部的”请求调用,外部的调用请求会返回”Not found” (404)
proxy_redirect off;
proxy_set_header Host tt.example.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://1.1.1.2:8080$request_uri; #原始uri不会镜像,可以通过$request_uri变量取得原始请求的uri
proxy_set_header X-Original-URI $request_uri;
}
#post_action
location @tt_http {
expires off;
proxy_redirect off;
proxy_set_header Host tt.example.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://1.1.1.2:8080;
}
include deny_file.conf;
include ssl.conf;
access_log /data/logs/$host.log access;
}
2、在1.1.1.2上启动gor 监听8080端口,并将http流量输出到文件
./gor --http-pprof :8080 --input-raw :8080 --input-raw-realip-header "X-Real-IP" --output-file /tmp/goreplay/requests.gor
ps: 输出的文件似乎是被切割的?requests_0.gor、requests_1.gor、requests_2.gor ....
3、利用gor导出的文件,对测试环境进行模拟请求
./gor --input-file /tmp/goreplay/requests_1.gor --output-http="http://t0.example.com"
从测试上看,go_action和mirror的区别在于:
- go_action会等待真实的请求完成,再进行镜像请求,而这个等待过程不影响ngx worker进程接受处理其他的请求
- mirror,向后端发送真实的请求后,不会等待结果而是直接开始镜像请求
nginx mirror/post_action+gor实现https流量复制的更多相关文章
- gor实现线上HTTP流量复制压测引流
一.使用背景 gor 是一款go语言实现的简单的http流量复制工具,它的主要目的是使你的生产环境HTTP真实流量在测试环境和预发布环境重现.只需要在 代理例如nginx入口服务器上执行一个进程,就可 ...
- Nginx流量复制
1. 需求 将生产环境的流量拷贝到预上线环境或测试环境,这样做有很多好处,比如: 可以验证功能是否正常,以及服务的性能: 用真实有效的流量请求去验证,又不用造数据,不影响线上正常访问: 这跟灰度发布还 ...
- 高并发 Nginx+Lua OpenResty系列(11)——流量复制/AB测试/协程
流量复制 在实际开发中经常涉及到项目的升级,而该升级不能简单的上线就完事了,需要验证该升级是否兼容老的上线,因此可能需要并行运行两个项目一段时间进行数据比对和校验,待没问题后再进行上线.这其实就需要进 ...
- nginx配置SSL证书实现https服务
在前面一篇文章中,使用openssl生成了免费证书 后,我们现在使用该证书来实现我们本地node服务的https服务需求.假如我现在node基本架构如下: |----项目 | |--- static ...
- TCPCopy 线上流量复制工具
TCPCopy是一种重放TCP流的工具,使用真实环境来测试互联网服务器上的应用程序. 一.描述: 虽然真实的实时流量对于Internet服务器应用程序的测试很重要,但是由于生产环境中的情况很负责,测试 ...
- Nginx使用SSL模块配置https
背景 开发微信小程序,需要https域名,因此使用Nginx的SSL模块配置https 步骤 一.去域名管理商(如腾讯云.阿里云等)申请CA证书 二.在Nginx中配置,一般情况下域名管理商会提供配置 ...
- 使用traefik进行流量复制
文章转载自:https://mp.weixin.qq.com/s/nMMN7hAJK6SFn1V1YyxvHA Traefik 2.0 还引入了镜像服务,一种可以将流入流量复制并同时将其发送给其他服务 ...
- nginx服务器http重定向到https的正确写法
http重定向到https使用了nginx的重定向命令.那么应该如何写重定向?之前老版本的nginx可能使用了以下类似的格式. rewrite ^/(.*)$ http://domain.com/$1 ...
- wireshark解密本地https流量笔记
此方式支持firefox,chrome 建立path变量 SSLKEYLOGFILE=c:\ssl.key 重启firefox chrome,访问https网站会自动生成ssl session key ...
随机推荐
- 使用PLSQL导入excel数据至oracle数据库
https://blog.csdn.net/qq_42909551/article/details/82108754 https://jingyan.baidu.com/album/14bd256e2 ...
- [转]npm安装教程
原文地址:https://www.cnblogs.com/lgx5/p/10732016.html 一.使用之前,我们先来掌握3个东西是用来干什么的. npm: Nodejs下的包管理器. webpa ...
- matlab学习笔记10_2 一般操作符
一起来学matlab-matlab学习笔记10 10_2一般操作符和数据显示格式 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德 ...
- windows下根据tcp端口查询对应的进程id(端口被占用)
如下: 查询监听LISTENING的端口1027 netstat -navo|find /i "listen"|find /i ":1027" 结果如下(最后一 ...
- [LeetCode] 750. Number Of Corner Rectangles 边角矩形的数量
Given a grid where each entry is only 0 or 1, find the number of corner rectangles. A corner rectang ...
- npm 私服工具verdaccio 搭建
npm私服搭建的必要性 1.如果公司处于隐私保护的需要,不想讲自己封的包推到npm社区,但又急需要一套完整的包管理工具来管理越来越多的组件,模块,项目.对于前端,最熟悉的莫过于npm,bower等,但 ...
- window系统修改时区IIS需要重启
window系统修改时区IIS需要重启,才能获取到修改后的时区,如果不重启IIS,IIS中发布程序获取不到已经修改时区的时间.
- 10分钟弄懂Raft算法
分布式系统在极大提高可用性.容错性的同时,带来了一致性问题(CAP理论).Raft算法能够解决分布式系统环境下的一致性问题. 我们熟悉的ETCD注册中心就采用了这个算法:你现在看的这篇微信公众号文章, ...
- objectARX2010及其以上版本使用publish打印(发布)图纸,后台布局打印图纸例子浅析
AutoCAD 2010版本开始新增了一个发布图纸的功能,可以后台打印图纸,以下是ADN官方博客例子浅析 原文地址 https://adndevblog.typepad.com/autocad/201 ...
- QT5 添加resource的方法
在工程中右键点击xxx.qrc文件,选择"open in editor",然后可以用"Add ""Remove"按钮进行资源文件的添加.