Nginx 使用 ngx_http_mirror_module 模块 复制 http请求流量

要求Nginx 版本 1.13.4 以上(此版本以上默认打开 ngx_http_mirror_module 模块)

server {

        upstream jumpserver {

  server ip:port weight=1;

        }
        location /collector {
            mirror /mirror_collector;
            uwsgi_pass jumpserver; # uwsgi 转发
            include uwsgi_params;
        }
        location /mirror_collector {

            # 流量 copy 
            proxy_pass http://ip:port$request_uri;
        }

}

参考:https://blog.csdn.net/liyan_1949/article/details/105335671

http://www.eryajf.net/3367.html

http://nginx.org/en/docs/http/ngx_http_mirror_module.html

### Nginx Mirror Module 配置指南 Nginx 从版本 1.13.4 开始支持 `ngx_http_mirror_module` 模块,这一模块允许将请求复制并发送至指定的镜像服务器,而不会干扰原始请求的处理流程[^1]。以下是关于如何配置和使用此功能的具体说明。 #### 一、确认 Nginx 支持 Mirror 模块 在启用流量镜像之前,需确保当前使用Nginx 版本已编译包含 `ngx_http_mirror_module` 模块。如果未包含,则需要重新编译 Nginx 并手动添加该模块。可以通过运行以下命令验证模块是否存在: ```bash nginx -V 2>&1 | grep -o with-http_mirror_module ``` 若无输出则表示尚未加载该模块。 --- #### 二、基本配置示例 假设有一个主服务位于 `/main-service/` 路径上,并希望将其部分流量镜像到另一个地址 `/mirror-service/` 上。可以按照如下方式设置: ```nginx http { server { listen 80; server_name localhost; location /main-service/ { proxy_pass http://backend_main_service; # 主服务目标地址 mirror /mirror_request; # 定义镜像路径 } location = /mirror_request { # 处理镜像请求的位置 internal; # 此位置仅限内部调用 proxy_pass http://backend_mirror_service; # 镜像服务目标地址 } } } ``` 上述配置中,当访问 `/main-service/` 时,除了正常的代理操作外,还会通过定义的 `mirror` 将相同请求转发给 `/mirror_request` 地址下的镜像服务器[^3]。 --- #### 三、高并发场景中的优化建议 由于镜像会增加额外负载,在高并发情况下可能导致镜像服务器资源耗尽甚至崩溃。因此需要注意以下几点来缓解压力[^2]: - **限制镜像比例**: 只有特定百分比请求被镜像。 ```nginx split_clients "${remote_addr}AAA" $key { 5% one; * two; } location /main-service/ { if ($key = "one") { mirror /mirror_request; } proxy_pass http://backend_main_service; } ``` - **调整超时时间**: 缩短镜像请求的最大等待时限以减少阻塞风险。 ```nginx location = /mirror_request { internal; proxy_connect_timeout 1s; proxy_read_timeout 1s; proxy_send_timeout 1s; proxy_pass http://backend_mirror_service; } ``` --- #### 四、其他注意事项 根据实际需求合理规划镜像策略非常重要。例如某些敏感数据不应参与镜像传输;另外还需注意后端响应会被丢弃的事实——即即使镜像服务器发生错误也不会反馈给前端用户[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值