Ngnix 流量拷貝

2021-10-07 16:03:01 字數 2743 閱讀 2588

在需要真實的流量做旁路測試的時候,我們就可以使用 nginx 來做流量的拷貝

nginx 自1.13.4 版本開始,自帶乙個 ngx_http_mirror_module,使用起來非常簡單,只要在需要 mirror 的 location 處新增 mirror 關鍵字就行

copy

123

4567

89

location / 

location = /mirror

乙個簡單的 nginx 配置如下:

但是 nginx 版本過低時,該如何做呢?

我們可以使用整合來 lua 的 openresty,使用 lua 指令碼處理 web 請求完成流量的拷貝

我們直接看例子:

# lua 指令碼分發到 product,並且對 url 重寫後,反向**到 product 的 server

location ~* ^/product

# lua 指令碼分發到 test,並且對 url 重寫後,反向**到 test 的 server

我們來捋一捋這個流程:

背景:首先我們向外部註冊的位址的是 /predict/fake,我們實際 web server 的位址是 /predict,然後乙個生產的 upstream (product)乙個測試用的 upstream(test),ok,這時候乙個 /predict/fake 請求過來了發生了什麼呢

首先 /predict/fake 匹配到了 location,然後經過 lua 指令碼分發請求,產生了兩個子請求 /product/predict/fake 和 /test/predict/fake

/product/predict/fake 匹配到新的 location,並且對這個 url 進行了 rewrite,變成了真實的後端請求位址 /predict,並且反向**到 product 這個 upstream 下的 server,同理對 /test/predict/fake 也是一樣的

兩個子請求都有返回,但是在 lua 指令碼中,只有 product 對應的請求被最終返回給了前端

需要注意的點:

反向**時 rewrite 後的 url 會覆蓋 proxy_pass 的 url

nginx 之 proxy_pass 介面**的規則

Nginx流量拷貝

廢物大師兄 將生產環境的流量拷貝到預上線環境或測試環境,這樣做有很多好處,比如 首頁,設定yum倉庫。為此,建立乙個檔案 etc yum.repos.d nginx.repo 將以下內容寫入檔案 module hotfixes trueyum安裝nginx yum install nginx預設情況...

工具使用 Ngnix

1,centos上 安裝nginx yum install nginx etc nginx 解除安裝nginx yum remove nginx 檢視nginx安裝目錄 ps ef grep nginx 啟動nginx service nginx start 殺掉程序 pkill 9 nginx 2...

ngnix 安裝筆記

yum update 更新系統類庫 yum install gcc 安裝ngnix 依賴包 安裝pcre庫 cd usr local wget tar zxvf pcre 8.40.tar.gz cd pcre 8.40 configure make make install 安裝zlib庫 cd ...