网站首页 > 技术教程 正文
简介 > 流量镜像 (Traffic Mirroring),通常用于进行应用版本的测试,它将实时流量的副本发送给被镜像的服务。采用这种方法,可以搭建一个与原环境类似的环境以进行测试,从而提前发现问题。由
流量镜像 (Traffic Mirroring),通常用于进行应用版本的测试,它将实时流量的副本发送给被镜像的服务。采用这种方法,可以搭建一个与原环境类似的环境以进行测试,从而提前发现问题。由于镜像流量存在于主服务关键请求路径带外,终端用户在测试全过程不会受到影响。
Nginx的流量镜像是只复制镜像,发送到配置好的后端,但是后端响应返回到nginx之后,nginx是自动丢弃掉的,这个特性就保证了镜像后端的不管任何处理不会影响到正常客户端的请求。
Nginx 基础流量镜像配置
采用nginx作为流量镜像,需要nginx支持 nginx_http_mirror_module 模块。
在 nginx 1.13.4 之后的怎么自己带 该模块不需要额外安装mirror模块
举个简单的栗子
Nginx复制所有请求流量
upstream service_a {
server 10.10.1.2:8080;
}
upstream service_b {
server 10.10.1.3:8080;
}
?
server {
server_name mirror.kpl.dev;
listen 80;
?
location / {
mirror /mirror; # mirror 指令制定镜像 uri 为 /mirror
proxy_pass http://service_a;
}
?
location = /mirror {
internal; # internal 指定此 location 只能被“内部的”请求调用,外部的调用请求会返回 ”Not found” (404)
rewrite ^/mirror(.*)$ $1$request_uri break;
proxy_pass http://service_b$request_uri;
}
}
只允许GET请求
location / {
mirror /mirror; # mirror 指令制定镜像 uri 为 /mirror
mirror_request_body off; # off 为不镜像请求body部分
proxy_pass http://service_a;
}
?
location = /mirror {
# 判断请求方法,不是GET返回403
if($request_method != GET) {
return 403;
}
internal; # internal 指定此 location 只能被“内部的”请求调用,外部的调用请求会返回 ”Not found” (404)
rewrite ^/mirror(.*)$ $1$request_uri break;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
proxy_pass http://service_b$request_uri;
}
拷贝流量放大
将流量放大,只需要增加多个, mirror 就好
location / {
mirror /mirror; # mirror 指令制定镜像 uri 为 /mirror
mirror /mirror; # 每多加一份mirror,流量放大一倍
proxy_pass http://service_a;
}
location = /mirror {
# 判断请求方法,不是GET返回403
if($request_method != GET) {
return 403;
}
internal; # internal 指定此 location 只能被“内部的”请求调用,外部的调用请求会返回 ”Not found” (404)
rewrite ^/mirror(.*)$ $1$request_uri break;
proxy_pass http://service_b$request_uri;
}
尾巴
如果mirror_request_body或者proxy_pass_request_body设置为 off,则Content-Length必须设置为"" 因为nginx(mirror_request_body)处理post请求时,会根据Content-Length获取请求体, 如果Content-Length不为空,而由于mirror_request_body或者proxy_pass_request_body设置为off, 处理方以为post有内容,当request_body中没有,处理方会一直等待至超时,则前者为off,nginx会报upstream请求超时。
猜你喜欢
- 2024-10-14 Nginx多策略流量分发(nginx ip分流)
- 2024-10-14 Nginx 一个牛X的功能,流量拷贝!(nginx copy)
- 2024-10-14 Nginx实时流量镜像(nginx流量控制)
- 2024-10-03 流量拷贝怎么办?Nginx模块mirror来助力-10
- 2024-10-03 分布式系统进阶二十三之流量网关和业务网关设计
- 2024-10-03 3分钟掌握nginx,让网站飞起来!(nginx最全教程)
- 2024-10-03 Nginx上的限流方式(nginx tcp 限流)
- 2024-10-03 性能工具之常见流量复制工具(性能工具之常见流量复制工具是什么)
- 2024-10-03 访问量一大服务器就挂?那是你不懂限流
- 2024-10-03 负载均衡架构举例说明(负载均衡的机制)
你 发表评论:
欢迎- 最近发表
-
- 阿里P8大佬总结的Nacos入门笔记,从安装到进阶小白也能轻松学会
- Linux环境下,Jmeter压力测试的搭建及报错解决方法
- Java 在Word中合并单元格时删除重复值
- 解压缩软件哪个好用?4款大多数人常用的软件~
- Hadoop高可用集群搭建及API调用(hadoop3高可用)
- lombok注解@Data没有toString和getter、setter问题
- Apache Felix介绍(apache fineract)
- Spring Boot官方推荐的Docker镜像编译方式-分层jar包
- Gradle 使用手册(gradle详细教程)
- 字节二面:为什么SpringBoot的 jar可以直接运行?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)