Nginx流量镜像(Mirror)(nginx流量镜像 响应拷贝)

Nginx流量镜像(Mirror)(nginx流量镜像 响应拷贝)

简介 > 流量镜像 (Traffic Mirroring),通常用于进行应用版本的测试,它将实时流量的副本发送给被镜像的服务。采用这种方法,可以搭建一个与原环境类似的环境以进行测试,从而提前发现问题。由

流量镜像 (Traffic Mirroring),通常用于进行应用版本的测试,它将实时流量的副本发送给被镜像的服务。采用这种方法,可以搭建一个与原环境类似的环境以进行测试,从而提前发现问题。由于镜像流量存在于主服务关键请求路径带外,终端用户在测试全过程不会受到影响。

Nginx的流量镜像是只复制镜像,发送到配置好的后端,但是后端响应返回到nginx之后,nginx是自动丢弃掉的,这个特性就保证了镜像后端的不管任何处理不会影响到正常客户端的请求。

Nginx流量镜像(Mirror)(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请求超时。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年5月7日 上午9:36
下一篇 2023年5月7日 上午9:52

相关推荐

  • 财经深一度|“可控匿名”“隐私保护”……数字人民币这些特征知多少?

    大数据时代,消费者对个人隐私保护日益重视,使用数字人民币时也不例外。如何在保障消费者隐私的情况下,使得支付更加便利、安全?数字人民币正通过实现“可控匿名”,探索解决之道。 图为20…

    科研百科 2023年5月29日
    251
  • 客户关系评估模型

    客户关系评估模型 客户关系评估模型是一种用于衡量企业客户关系质量的工具,可以帮助企业了解客户满意度, 忠诚度和贡献度等方面的数据。客户关系评估模型可以帮助企业改善客户体验, 提高客…

    科研百科 2024年12月6日
    0
  • 一建报考在即,10个专业选哪个?选错了,第二年可以换(一建报考第二年可以换专业吗)

    2022年一建报名虽说还没开始(预计8-9月),但一建备考时间现已不充裕,如何尽快选定报考专业,抓紧备考受到很多考生关注。 一建各专业对比 01看备考难度 综合近些年的通过率数据来…

    科研百科 2022年7月25日
    147
  • 新风系统办公

    新风系统办公:让办公室更加健康舒适 近年来,随着办公室环境的恶化和人们的健康意识的提高,新风系统已经成为了越来越多公司选择的必备办公设备。新风办公不仅可以帮助人们过滤空气中的颗粒物…

    科研百科 2024年9月24日
    18
  • 项目管理pmbok

    项目管理PMbok: 项目管理流程的指南 项目管理是组织实现目标的关键步骤。它涉及到从计划、执行、监控和收尾整个生命周期。pmbok(Project Management Body…

    科研百科 2024年7月23日
    59
  • 室内装修项目管理

    室内装修项目管理:实现高质量工程的关键在于时间管理 室内装修项目管理是一项复杂而重要的任务,需要协调多个方面的工作,包括设计师、工程师、项目经理和工人等。要想实现高质量的工程,关键…

    科研百科 2024年7月27日
    38
  • 项目经费支出明细表(项目经费)

    项目经费项目经费预算一般为800人,预计每学期至少要满足1万元。今年年初,全区的“方士敏”与公安机关“宽进严出”的诉求正在相互矛盾。据了解,该校由刘女士所在的市区,业务人员和工作人…

    科研百科 2024年8月1日
    38
  • 高德地图一加定制版

    高德地图一加定制版:探索氢OS 新地图体验 近年来,随着智能手机的普及,越来越多的人开始使用手机导航。高德地图作为行业内的领先者,一直致力于为用户提供更好的地图服务。今天,我们带来…

    科研百科 2024年10月22日
    9
  • 中央社会工作部组建,有何深意(社会工作部是什么单位)

    近日,新组建的中央社会工作部不断有新消息释出。 7月21日,中央社会工作部、国家信访局与浙江省委在浦江县召开总结推广“浦江经验”深入开展领导干部接访下访经验交流会,这是中央社会工作…

    科研百科 2023年9月11日
    352
  • 如何开好一个会议?(作为主持人如何开好一个会议)

    这篇文章是我在公司内部写的一篇博客。 我们公司有写作的文化,从博客、周报到各种工作成果,都会沉淀到飞书文档,我在 Q2 的一个 KR 就是「工作成果百分百沉淀到飞书文档」,这篇博客…

    科研百科 2022年10月17日
    228