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

相关推荐

  • 学习工会预算管理办法

    学习工会预算管理办法 近年来,随着社会的发展和进步,工会组织在维护职工权益和推动经济发展中发挥着越来越重要的作用。然而,随着工会组织的发展壮大,预算管理也成为了工会组织的重要任务之…

    科研百科 2024年12月6日
    0
  • 分享——货运公司管理职责(货运公司部门职责及岗位职责)

    货运公司管理职责 一、严格遵守公司的各项规章制度,不准擅自离岗,坚守工作岗位。 二、协助运输部门按时完成生产任务,熟悉运输业务的流程,追踪了解和掌握所发出车辆的动态,保证运输的供给…

    科研百科 2022年12月3日
    299
  • 商业综合体智能化项目系统规划设计方案(PPT)(商场智能化设计方案)

    来源:网络 此方案共计87页PPT,领取方式见文末 工程概述 1、本项目坐落在****,建筑总体面积****,商业面积****,集体育赛事、运动体验、儿童、零售、餐饮、生活配套于一…

    科研百科 2022年8月25日
    338
  • 静海区人事任免 2024年4月

    2024年4月,静海区进行了人事任免。以下是具体情况: 1. 任命王强为静海区卫健委医政医管科副科长。 2. 任命张智为静海区卫健委医政医管科副科长。 3. 任命刘波为静海区卫健委…

    科研百科 2024年10月22日
    129
  • 80军工大下马

    80军工大下马 近年来,中国的军工产业一直是国家重要的战略产业之一。然而,在近年来,随着国内政治环境的变化和市场需求的下降,中国的军工产业也面临着重大的挑战。其中,最大的挑战就是8…

    科研百科 2024年11月18日
    2
  • 函调外地 快递费怎么办

    尊敬的XX公司: 您好!我是贵公司的函调人员,目前负责函调贵公司外地的一些事情。 我想咨询一下关于快递费的问题。我们公司在贵公司外地设有一个分支机构,我们需要向当地的快递公司支付快…

    科研百科 2024年11月21日
    0
  • 微教育小程序开发有什么优势(教育小程序开发网站)

    微教育小程序的定制开发可以从字面上理解。此类小程序专门为教育行业定制,属于个性化开发小程序的一种。微信小程序的定制开发也是如此,不过这类小程序也有一些特点:开箱即用,可以降低用户的…

    科研百科 2023年4月5日
    167
  • 办公协同oa(办公协同免费)

    办公协同免费: 让工作更高效、更顺畅 随着数字化时代的到来,办公协同已经成为了企业日常运营中不可或缺的一部分。无论是企业内部的邮件、文档、日程安排,还是跨团队的协作,都需要通过协同…

    科研百科 2024年6月4日
    46
  • WMS系列:出库管理说明(wms出库流程)

    WMS系列:出库管理说明(wms出库流程) 出库环节是整个仓库中最复杂的一环,有固定的业务流程。本文作者对出库的整体流程框架、常见的出库流程,以及出库涉及的策略进行了分析,一起来看…

    科研百科 2024年3月22日
    131
  • 排进度软件

    排进度软件概述 随着现代软件开发的不断推进,进度管理已经成为软件开发过程中必不可少的一部分。排进度软件是一种专门用于管理软件开发进度的工具,可以帮助软件开发团队有效地安排开发任务,…

    科研百科 2024年8月19日
    35