一、功能:将某一服务器的流量复制到其他服务器中。
二、方法:使用nginx的ngx_http_mirror_module模块。nginx 1.13.4及后续版本内置了ngx_http_mirror_module模块,提供流量镜像的复制功能。对于源站的请求,直接原路返回;源站把流量复制到mirror站,两者互不影响。
三、安装:
正常安装nginx1.13.4或者后续版本。下面安装nginx1.16.1版本。
1、下载nginx1.16.1源码 wget http://nginx.org/download/nginx-1.16.1.tar.gz
2、安装依赖插件
yum -y install openssl openssl-devel
yum -y install pcre-devel
3、编译安装
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream
make && make install
4、配置流量镜像复制,比较简单:
server {
listen 10000;
root /data0/;
#源站
location / {
#开发环境
mirror /mirror1;
#sit环境
mirror /mirror2;
#UAT环境
mirror /mirror3;
#灰度环境
proxy_pass http://192.168.100.10:10000;
mirror_request_body on;
}
#镜像站点
location /mirror1 {
internal;
proxy_pass http://192.168.100.20:20000$request_uri;
proxy_pass_request_body on;
proxy_set_header X-Original-URI $request_uri;
}
location /mirror2 {
internal;
proxy_pass http://192.168.100.30:30000$request_uri;
proxy_pass_request_body on;
proxy_set_header X-Original-URI $request_uri;
}
location /mirror3 {
internal;
proxy_pass http://192.168.100.40:40000$request_uri;
proxy_pass_request_body on;
proxy_set_header X-Original-URI $request_uri;
}
}
以上配置复制get和post请求,如果不需要复制post请求,则设置源站 mirror_request_body off和镜像站点proxy_pass_request_body off。
增加一份mirror,则可以把流量增大一倍,如:
#开发环境
mirror /mirror1;
mirror /mirror1;