場景是這樣的,我在兩個互相備份的應用程式伺服器前面有一個nginx反向代理伺服器,我希望nginx首先將所有用戶請求轉發到第一個應用程式伺服器,如果第一個應用程式伺服器宕機,我希望nginx 從那時起將所有用戶請求轉發到第二個應用程式伺服器,直到第二個應用程式伺服器關閉,並且nginx 應恢復將所有用戶請求轉發到第一個應用程式伺服器,依此類推。當然,如果兩個應用程式伺服器都關閉了,那麼 nginx 將回傳錯誤。
我研究了上游負載平衡和 proxy_next_upstream 設定等設置,但它似乎不是我在這裡尋找的。知道如何為我的場景配置 nginx 嗎?謝謝。
答案1
您需要使用 nginxupstream
配置來實現這一目標。
upstream mybackend {
# first app server
server 192.168.0.1;
# second app server
server 192.168.0.2 backup;
}
server {
...
location / {
proxy_pass http://mybackend;
}
}
這裡的關鍵是參數,它告訴 nginx 僅在主節點(即未標記的節點)不可用的backup
情況下使用該節點。backup
滿的文件在這裡。
答案2
經過更多搜尋後,我決定使用 OpenResty (https://openresty.org/)滿足我的需要,特別是 LuaUpstreamNginxModulehttps://github.com/openresty/lua-upstream-nginx-module並使用一些自訂 Lua 腳本,它似乎非常適合我的場景。