1、背景
最近nginx官網公佈了nginx1.13.4最新的ngx_http_mirror_module模塊,利用mirror模塊,業務能夠將線上實時訪問流量拷貝至其餘環境,基於這些流量能夠作版本發佈前的預先驗證,進行流量放大後的壓測等等
mirror模塊配置分爲兩部分,源地址和鏡像地址配置,配置位置能夠爲nginx配置文件的http, server, location上下文,配置示例爲:
location / {
root html;
index index.html index.htm;
proxy_pass http://192.168.38.47:8080;
mirror /mirror;
mirror_request_body off;
}
location /mirror {
internal;
proxy_pass http://192.168.39.47:8080$request_uri;
proxy_set_header X-Original-URI $request_uri;
}
拓撲圖
![](http://static.javashuo.com/static/loading.gif)
3、配置說明:html
1.original配置
- location /指定了源uri爲/
- mirror /mirror指定鏡像uri爲/mirror
- mirror_request_body off | on 指定是否鏡像請求body部分,此選項與proxy_request_buffering、fastcgi_request_buffering、scgi_request_buffering和 uwsgi_request_buffering衝突,一旦開啓mirror_request_body爲on,則請求自動緩存;
- proxy_pass 指定數據轉發server的地址
2.mirror配置
- internal 指定此location只能被「內部的」請求調用,外部的調用請求會返回」Not found」 (404)
- proxy_pass 指定將鏡像數據發送給test server的地址
- proxy_set_header 設置鏡像流量的頭部
- 原始uri不會鏡像,能夠經過$request_uri變量取得原始請求的uri
4、特別說明nginx
在拓撲圖中6.mirror respones中:緩存
test server 返回的數據,nginx接受以後會丟棄,不會轉發給客戶端;所以鏡像過程不影響用戶的正常使用;ui