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

相关推荐

  • excel开发软件

    Excel开发软件是一种功能强大的工具,可以帮助用户处理和分析大量的数据。它提供了各种功能和特性,使用户能够轻松地创建、编辑和管理电子表格。在本文中,我们将探讨Excel开发软件的…

    科研百科 2024年2月23日
    107
  • 基层党组织建设薄弱,有三个大原因(基层党组织建设薄弱的原因)

    滕德银 有的基层党组织建设还比较薄弱,联系服务党员、群众的机制还不够健全顺畅;有的地方仍然存在形式主义、官僚主义,急于求成、急功近利,增加基层负担,如此等等。(1月8日,新华社) …

    科研百科 2023年2月6日
    1.8K
  • jsp宠物管理系统项目

    jsp宠物管理系统项目 随着宠物行业的快速发展,宠物管理系统成为了宠物主人和宠物店必不可少的工具。本项目是一个基于jsp的宠物管理系统,旨在帮助宠物店提高管理效率,减少人工操作,提…

    科研百科 2024年12月16日
    0
  • 学校经费报销制度

    学校经费报销制度 随着教育的普及和发展,学校作为教育的重要场所,也变得越来越重要。然而,学校在经费管理方面仍然存在一些问题,如报销流程复杂、制度不够完善等,这些问题严重影响了学校的…

    科研百科 2024年7月11日
    55
  • 工装项目流程(工装项目管理系统)

    工装项目管理系统工装项目管理系统 现代医学

    科研百科 2024年5月18日
    72
  • 【党建工作】2023年第三季度局机关党建工作总结(2021年党建工作第三季度总结)

      今年我局党的建设工作思路是:坚持以习近平新时代中国特色社会主义思想为指导,全面贯彻落实党的二十大精神,以抓好机关党的政治建设为主线,以推进模范机关创建、清廉机关建设和开展基层党…

    科研百科 2023年10月11日
    100
  • 项目研究技术路线

    项目研究技术路线 在项目研究中,确定正确的技术路线是非常重要的。正确的技术路线可以帮助团队更好地理解项目需求,更有效地实现项目目标,并且更快速地完成项目。 在确定技术路线时,需要考…

    科研百科 2024年10月14日
    12
  • 安全管理工作APP在施工现场管理中的应用(安全管理工作app在施工现场管理中的应用有哪些)

    安全管理工作APP在施工现场管理中的应用(安全管理工作app在施工现场管理中的应用有哪些) 信息化时代发展背景下,信息技术已经成为人们日常生产生活中必不可少的内容。在施工现场管理中…

    科研百科 2024年3月25日
    109
  • 免费人事档案管理系统

    免费人事档案管理系统: 让人力资源管理更加高效 随着现代企业的快速发展,人力资源管理也变得越来越重要。但是,传统的人事档案管理系统往往需要付费,这不仅增加了企业的成本,同时也不利于…

    科研百科 2024年9月16日
    24
  • 项目经费开支情况说明

    项目经费开支情况说明 随着公司业务的不断增长,我们决定启动一项新的项目。为了支持这个项目,我们计划投入一定的经费。在这里,我将向大家说明我们的项目经费开支情况。 我们的项目是一项针…

    科研百科 2024年7月11日
    40