Nginx

沒有鏡像模組的 Nginx 鏡像

  • October 23, 2018

碰巧,不在我公司的某個人決定手動編譯 nginx,卻不知道他在做什麼,並將其投入生產。

現在我們無法添加模組,而且我們無法關閉 nginx 並從新實例重新開始,因為它會破壞客戶的體驗(因為它正在生產中)。

為了更接近這一點(我們可以用一個新的和新的替換這個 nginx 實例),我們想實現鏡像。同樣,我們現在無法安裝鏡像模組。我們必須以其他方式做到這一點。

我對nginx一無所知,但我是一個一直想學習並喜歡去瀏覽網路與人討論事情的人。

基本上,我們有一個 nginx 作為反向代理。發送到的請求url/apis*被重定向到內部 API 伺服器。出於測試目的,我們需要將此流量鏡像到另一台伺服器。有人在工作中提出了這個解決方案,使用post_action.

location ~* /apis*$ {
 proxy_pass http://api_server/$1;
 proxy_set_header Host      $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_pass_request_headers      on;
 gzip "on";
 keepalive_timeout 10;
 post_action @mirror_test;
 }

 location @mirror_test{
   proxy_ignore_client_abort on;
   proxy_pass http://test_api_server/$1;
 }
}

現在,這個解決方案確實正確地反映了流量,但是,我們不確定響應是否被忽略。閱讀鏡像模組文件,它說使用該模組的鏡像子請求響應被忽略,我們希望獲得相同的行為。對客戶端的響應應該只來自主伺服器 ( api_server) 而不是來自鏡像伺服器 ( test_api_server)。

那麼,在這個配置中,來自鏡像伺服器的響應是否被忽略?

您可以在不斷開單個客戶端連接的情況下升級 nginx:https ://www.digitalocean.com/community/tutorials/how-to-upgrade-nginx-in-place-without-dropping-client-connections

更新:以下文字在評論中觸及您的問題:

優雅地更新我們的執行檔的第一步是實際更新您的二進製文件。使用適合您的 Nginx 安裝的任何方法執行此操作,無論是通過包管理器還是源安裝。

因此,您可以使用要包含或排除的任何模組對原始碼進行全新安裝,然後使用該二進製文件進行升級過程。

引用自:https://serverfault.com/questions/930875