Nginx镜像模块:ngx_http_mirror_module
Nginx 中镜像模块的功能是将用户的访问请求镜像复制到指定的 URI,通过 location 的 URI 匹配将流量发送到指定的服务器。用户请求的实际请求响应通过 Nginx 返回客户端,镜像服务器的请求响应则会被 Nginx 服务器丢弃。
镜像请求与实际请求是异步处理的,对实际请求无影响。该模块的内置配置指令如下面表格中所示。
表:访问镜像指令
配置样例如下:
server {
listen 8080;
root /opt/nginx-web/www;
location / {
mirror /benchmark;
index index.html;
}
location = /benchmark {
internal;
proxy_pass http://192.168.2.145$request_uri;
}
}
表:镜像请求体指令
配置样例如下:
server {
listen 8080;
server_name localhost;
root /opt/nginx-web/www;
mirror_request_body off;
location / {
index index.html;
mirror /accesslog;
}
location = /accesslog {
internal;
proxy_pass http://192.168.2.145/accesslog/${server_name}_$server_port$request_uri;
}
} 如果该指令值为 off 则不同步请求体。
配置样例如下:
server {
listen 8080;
root /opt/nginx-web/www;
location / {
mirror /benchmark; # 镜像用户请求
mirror /benchmark; # 镜像用户请求
mirror /benchmark; # 镜像用户请求
index index.html;
}
location = /benchmark {
internal;
proxy_pass http://192.168.2.145$request_uri;
}
} 访问镜像模块可以将用户请求同步镜像到指定的服务器,同时还可以对用户的流量进行放大,通常可以在镜像线上流量后进行压力测试或预生产环境验证。