首页 > 系统相关 >Nginx实现流量复制

Nginx实现流量复制

时间:2023-04-25 12:04:39浏览次数:27  
标签:pass location 流量 server Nginx 复制 proxy mirror backend

1、简介

Nginx自 1.13.4 开始引入 nginx_mirror_module 模块,利用此模块可以将线上实时流量镜像至其他环境,而Nginx最终 会丢弃 mirror 的响应,从而不影响源站请求的响应。

2、配置

upstream backend {
  server backend.server:10000;
}

upstream test_backend {
  server test.server:20000;
}

server {
  server_name proxy.local;
  listen 8000;

  location / {
    mirror /mirror;
    proxy_pass http://backend;
  }

  location = /mirror {
    internal;
    proxy_pass http://test_backend$request_uri;
  }
}

# 按百分比镜像 
upstream backend { 
  server backend.server:10000; 
} 
upstream test_backend { 
  server test.server:20000; 
}
split_clients "ADDR${remote_addr}TIME${date_gmt}" $mirror_backend {
    50% mirror;
    * "";
}
server { 
  server_name proxy.local; 
  listen 8000; 
  location / { 
        if ($mirror_backend = "mirror") {
        mirror /mirror; 
        }
    proxy_pass http://backend; 
  } 
  location = /mirror 
  { 
    internal; 
    proxy_pass http://test_backend$request_uri; 
  } 
}

3、多倍复制。 有几个mirror指令,就是复制几倍。如下面的例子,原始的1个请求会向mirror端发送2个请求。 可以用压力测试

location / { 
    mirror /mirror; 
    mirror /mirror;
    proxy_pass http://backend; 
}

nginx会对第二个参数进行MurmurHash2计算,会得到1个32位的hash值,值范围在前50%的,会将$mirror_backend 赋值为mirror,后50%会赋值为空。通过判断变量$mirror_backend的值,来确定是否镜像请求。

4、注意事项

经测试mirror端响应异常和端口关闭(主机在,进程关闭) 都不会影响线上服务。但是mirror端响应变慢会拖慢线上的请求,导致影响线上的服务。针对这个问题,有两个改善的方法:
1、 部分镜像
2、在mirror location里设置proxy_connect_timeout、proxy_read_timeout 超时时间。如:
location = /mirror { 
    internal; 
    proxy_pass 
    http://mirror$request_uri; 
    proxy_connect_timeout 200ms;  #参考镜像项目的响应时间来确定具体的值
    proxy_read_timeout 200ms;
}

标签:pass,location,流量,server,Nginx,复制,proxy,mirror,backend
From: https://blog.51cto.com/zzzhao/6223711

相关文章

  • nginx解决Ajax跨域问题
    今天遇到一个ajax跨域问题,下拉框的数据源要从一个接口获得,但是该接口被部署到另外一台服务器上,在本地可以通过http请求访问,并可以返回json的数据,但是放到页面中不可以获取到下拉框的值,发现chrome控制台中该请求成功,但是没有返回值,于是便遇到了跨域的问题,请教一同事,问题得到解决:1.搭......
  • 流量即生意!红海中的茶饮品牌如何做增量?
    新消费潮流走红,茶饮赛道的蓝海阶段早已过去,随之而来的是越来越卷的行业大战,「喜茶」和「奈雪の茶」已经完成市场的攻城掠地,形成寡头垄断高端茶饮市场的局面。与此同时,中低端茶饮赛道上,“抢位战”也愈演愈烈。千亿级别的茶饮赛道,会诞生多少个品牌?一切都是未知数,但似乎能给老板们带来......
  • Nginx常用配置及和基本功能讲解
    作者:京东物流 殷世杰Nginx已经广泛应用于J-one和Jdos的环境部署上,本文对Nginx的常用的配置和基本功能进行讲解,适合Nginx入门学习。1核心配置找到Nginx安装目录下的conf目录下nginx.conf文件,Nginx的基本功能配置是由它提供的。Nginx的配置文件(conf/nginx.conf)整体上分为如下几个......
  • 解决企业微信在线文档里的代码复制后不能执行的问题
    【问题】某日帮同事改了个SQL,自己能执行,因为懒得另存为,就直接丢到企业微信发了。企业微信提示因为超长生成了在线文档。同事复制后,执行一直报错,类似下面的情况:【报错】 【能执行】【原因】既然语法正确,那么就把文档下载下来瞅瞅。以下是WPS的检查方法,word检查方法类似。......
  • Centos7配置Mysql8主从复制同步数据
    1.首先需要在三台不同主机安装好mysql8,参考:https://www.cnblogs.com/haoxuanchen2014/p/17351034.html主库ip:192.168.2.66从库1ip:192.168.2.67从库2ip:192.168.2.682.配置主库第一步:添加配置文件/etc/my.cnf加多下面两句代码如下(示例):[mysqld]server-id=101 #[必......
  • LINUX安装nginx详细步骤
    1.安装依赖包//一键安装上面四个依赖yum-yinstallgcczlibzlib-develpcre-developensslopenssl-devel2.下载并解压安装包cd/usr/localmkdirnginxcdnginx//下载tar包wgethttp://nginx.org/download/nginx-1.13.7.tar.gztar-xvfnginx-1.13.7.tar.gz3.安装n......
  • nginx - 反向代理tcp地址
    在http同级添加红色部分即可#tcp配置stream{server{listen9101;proxy_pass127.0.0.1:8080;}}.........http{......}stream的端口不可与http共用,需要单独占用一个新的......
  • docker启动nginx
    1.下载对应镜像dockerpullnginx:1.19.102.运行容器dockerrun-p80:80--namenginx01nginx:1.19.10--restart=always-v容器(/etc/nginx/nginx.conf)1).实现反向代理 负载均衡拷贝文件:docker  cp 容器ID:/etc/nginx/nginx.conf  /root/nginxconf ......
  • 把nginx的access_log以json的格式输出
    #在`nginx.conf`中添加如下配置log_formatjsonescape=json'{"@timestamp":"$time_iso8601",''"server_addr":"$server_addr",''"remote_addr":"......
  • 解决vue移动端 ios页面切换出现闪屏现象(可直接复制张贴)
    在App.vue文件中监听路由//控制左右滑动 watch:{  $route(to,from){   constarr=[    '/warningCenter/warningCenterHome',    '/equInspection/equInspectionHome',    '/ourOrder/ourOrderHome',    '/orderC......