Nginx的mirror指令示例配置

 更新时间:2022年05月12日 14:06:23   作者:白--茶  
这篇文章主要介绍了Nginx的mirror指令能干啥?mirror 指令提供的核心功能就是流量复制, 至于流量复制要用来干嘛,这个就各取所需了,需要的朋友可以参考下

mirror 流量复制

Nginx的 mirror 指令来自于 ngx_http_mirror_module 模块 Nginx Version > 1.13.4

mirror 指令提供的核心功能就是流量复制, 至于流量复制要用来干嘛,这个就各取所需了。

先看一段示例配置:

location / {
    # 开启流量复制
    mirror /mirror;
    proxy_pass http://backend;
}

# 复制的流量转发到这里
location = /mirror {
    # internal 标志该location只为内部的重定向服务, 外面来的返回404
    internal;
    # $request_uri 需要显示指明,因为流量复制过来之后会丢掉request_uri
    proxy_pass http://test_backend$request_uri;
}

有什么实际用处?举个实际使用的例子:

上篇写了Nginx的map指令用法其中提到的一个使用cookie进行多环境分流的例子,同样的场景, 基于cookie分流遇到的一个问题是:对于第三方的回调请求支持不友好, 因为第三方不可能携带我们自定义的cookie来回调我们。这样说可能没参与项目的不太好理解, 简单说是这样的: 比如我在3环境和腾讯云做了交互, 之后腾讯云会回调3环境的一个接口(因为测试多环境使用同一个域名),完犊子了吧,因为腾讯云没有带我们分环境的cookie, 因此我在3环境的这个交互一定是无法完成的。

那么如何解决这个问题? mirror 指令可以解决。

- Nginx 会丢弃 mirror 的响应 : 这一点很重要

为了解决第三方回调的问题,我们开启了Nginx的mirror, 把回调接口的请求复制到测试所有环境内,总有一个是目标环境(从业务上说即使回调到其他环境也无所谓,所以直接镜像到所有环境), 配置大致是这样:

location /notify/v1.0/ {
    mirror  /test-01;
    mirror  /test-02;
    mirror  /test-03;
    mirror  /test-04;
    mirror  /test-05;
    mirror  /test-06;
    mirror  /test-07;
    mirror  /test-08;
    mirror  /test-09;
    mirror  /test-10;
}
location = /test-01 {
    internal;
    # 头信息视情况添加/删除
    proxy_pass_header Server;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://upstream_test-01$request_uri;
}
upstream upstream_test-01 {
    server 1.1.1.1:80 weight=100 max_fails=10 fail_timeout=60s;
}

再举个实际的例子

灰度验证

提供给一个思路: 比如你需要改动线上的都个配置,但是不确定是不是有问题的时候, 这个时候其实可以使用一下mirror的流量复制, 先在灰度环境改掉,然后使用mirror镜像线上流量到灰度验证,这时候你只需要观测灰度的请求是否正常即可。(当然可以自动化程度高一些,自由发挥), 也可以使用 split_client 指令做部分流量的验证。

注意点

Nginx会丢弃mirror响应,但是如果mirror过去的请求一直无响应或响应慢的时候,这时会影响主请求的响应速度的。需要注意,一般不会把POST/PUT等会影响数据状态的请求做镜像的, 除非你明确清楚的知道这样产生的影响并且可以接受.

到此这篇关于Nginx的mirror指令能干啥?的文章就介绍到这了,更多相关Nginx的mirror指令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • nginx下如何设置上传文件大小

    nginx下如何设置上传文件大小

    这篇文章主要介绍了nginx下如何设置上传文件大小问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Nginx服务器中的模块编写及相关内核源码初探

    Nginx服务器中的模块编写及相关内核源码初探

    这篇文章主要介绍了Nginx服务器中的模块编写及相关源码初探,文中以一个简单的Hello world模块的编写来深入分析Nginx内核所用到的基础函数,需要的朋友可以参考下
    2015-12-12
  • 教你使用Nginx限制百度蜘蛛频繁抓取的问题

    教你使用Nginx限制百度蜘蛛频繁抓取的问题

    这篇文章主要介绍了使用Nginx限制百度蜘蛛频繁抓取的问题,百度蜘蛛对网站的抓取频率高和抓取量骤增导致服务器负载高,经常收到警告信息,每分钟允许百度蜘蛛抓取200次,超过频率限制的返回503,对Nginx限制蜘蛛频繁抓取相关知识感兴趣的朋友一起看看吧
    2022-01-01
  • Nginx实现接口限流的方法汇总

    Nginx实现接口限流的方法汇总

    这篇文章主要为大家详细介绍了Nginx实现接口限流的相关方法,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • nginx支持带下划线的header实现

    nginx支持带下划线的header实现

    如果header name中包含下划线,则忽略掉,本文主要介绍了nginx支持带下划线的header实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • Keepalived实现Nginx负载均衡高可用的示例代码

    Keepalived实现Nginx负载均衡高可用的示例代码

    这篇文章主要介绍了Keepalived实现Nginx负载均衡高可用的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • nginx 如何配置文件上传大小

    nginx 如何配置文件上传大小

    这篇文章主要介绍了nginx 如何配置文件上传大小,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • Nginx 504 Gateway Time-out的两种最新解决方案

    Nginx 504 Gateway Time-out的两种最新解决方案

    大家在访问网站的时候通常会遇到502错误、404错误等,很少会遇到504错误,但是在我们去访问大流量或者内容数据量较多的网站时,打开网页偶尔就会出现504 gateway time-out,这篇文章主要给大家介绍了关于Nginx 504 Gateway Time-out的两种解决方案,需要的朋友可以参考下
    2022-08-08
  • nginx配置代理多个前端资源

    nginx配置代理多个前端资源

    本文主要介绍了nginx配置代理多个前端资源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • linux设置Nginx自动重启的实现

    linux设置Nginx自动重启的实现

    在Linux系统中,设置Nginx服务开机自动启动及意外停止后自动重启是保持服务稳定运行的关键步骤,本文详细介绍了如何使用systemctl命令和配置systemd服务文件来实现这一功能,感兴趣的可以了解一下
    2024-09-09

最新评论