1. 需要
将生产环境的流量拷贝到预上线环境或测试环境,这样做有很多益处,比方:
- 能够验证性能是否失常,以及服务的性能;
- 用真实有效的流量申请去验证,又不必造数据,不影响线上失常拜访;
- 这跟灰度公布还不太一样,镜像流量不会影响实在流量;
- 能够用来排查线上问题;
- 重构,如果服务做了重构,这也是一种测试形式;
- 为了实现流量拷贝,Nginx 提供了 ngx_http_mirror_module 模块
2. 源码装置
yum 装置没有蕴含咱们所需的 ngx_http_mirror_module 模块,因而,真正要应用的时候最好还是采纳自定义装置,即从源码构建
首先,下载源码 http://nginx.org/en/download….
接下来,编译装置,例如:
./configure
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-http_ssl_module
--without-http_limit_req_module
--without-http_mirror_module
--with-pcre=../pcre-8.43
--with-zlib=../zlib-1.2.11
--add-module=/path/to/ngx_devel_kit
--add-module=/path/to/lua-nginx-module
make & make install
3. 配置
upstream api.abc.com {server 127.0.0.1:8080;}
upstream tapi.abc.com {server 127.0.0.1:8081;}
server {
listen 80;
# 源站点
location /api {
proxy_pass http://api.cjs.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 流量复制
mirror /newapi;
mirror /mirror2;
mirror /mirror3;
# 复制申请体
mirror_request_body on;
}
# 镜像站点
location /tapi {
proxy_pass http://tapi.cjs.com$request_uri;
proxy_pass_request_body on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
4. 文档
- Nginx 文档
http://nginx.org/en/docs/
http://nginx.org/en/docs/http…
http://nginx.org/en/docs/begi…
http://nginx.org/en/docs/http…
http://nginx.org/en/docs/conf…