Nginx負載均衡之健康檢查

甩鍋俠發表於2018-06-09

負載均衡例項

http{
    upstream  myserver {
    server 10.10.10.1  weight=3  max_fails=3  fail_timeout=20s;
    server 10.10.10.2  weight=3  max_fails=3  fail_timeout=20s;
    #定義後端伺服器,權重3,失敗3次後暫停服務20s
    }
    server  {
        listen 80;
        server_name www.domain.com;
        index   index.html;
        root  /date/web
        location  /  {                      # 配置健康檢查
            proxy_pass http://myserver;
            proxy_next_upstream http_500 http_502 error timeout
            invalid_header;
            # 當出現以上狀態碼時,轉發給下一臺伺服器
        }
    }
}

健康檢查

指定在何種情況下一個失敗的請求應該被髮送到下一臺後端伺服器:

error      # 和後端伺服器建立連線時,或者向後端伺服器傳送請求時,或者從後端伺服器接收響應頭時,出現錯誤
timeout    # 和後端伺服器建立連線時,或者向後端伺服器傳送請求時,或者從後端伺服器接收響應頭時,出現超時
invalid_header  # 後端伺服器返回空響應或者非法響應頭
http_500   # 後端伺服器返回的響應狀態碼為500
http_502   # 後端伺服器返回的響應狀態碼為502
http_503   # 後端伺服器返回的響應狀態碼為503
http_504   # 後端伺服器返回的響應狀態碼為504
http_404   # 後端伺服器返回的響應狀態碼為404
off        # 停止將請求傳送給下一臺後端伺服器

需要注意一點的是,只有在沒有向客戶端傳送任何資料以前,將請求轉給下一臺後端伺服器才是可行的。也就是說,如果在傳輸響應到客戶端時出現錯誤或者超時,這類錯誤是不可能恢復的。


相關文章