Nginx系列 Nginx自帶後端健康檢查

2021-10-24 08:59:23 字數 1996 閱讀 1000

嚴格說nginx並沒有自帶針對負載均衡後端節點的健康檢查功能,但是可以通過預設自帶的ngx_http_proxy_module 模組和ngx_http_upstream_module模組中的相關指令來完成當後端節點出現故障時,自動切換到健康節點。

proxy_connect_timeout 指令

語  法:    proxy_connect_timeout time;

預設值: proxy_connect_timeout 60s;

上下文: http, server, location

該指令的功能是設定與後端伺服器建立連線的超時時間。應該注意超時一般不可能大於75秒。

proxy_read_timeout指令

語  法:    proxy_read_timeout time;

預設值: proxy_read_timeout 60s;

上下文: http, server, location

定義從後端伺服器讀取響應的超時時間。該超時是指相鄰兩次讀操作之間的最長時間間隔,而不是整個響應傳輸完成的最長時間。如果後端伺服器在超時時間段內沒有傳輸任何資料,則連線將被關閉。

proxy_next_upstream指令

語  法:    proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 |http_404 | off ...;

預設值: proxy_next_upstream error timeout;

上下文: http, server, location

指定在何種情況下乙個失敗的請求應該被傳送到下一台後端伺服器節點。

error:nginx與後端伺服器建立連線時;或者向後端伺服器傳送請求時;或者從後端伺服器接收響應頭時,出現錯誤

timeout:和後端伺服器建立連線時;或者向後端伺服器傳送請求時;或者從後端伺服器接收響應頭時,出現超時

invalid_header:後端伺服器返回空響應或者非法響應頭

http_500:後端伺服器返回的響應狀態碼為500

http_502:後端伺服器返回的響應狀態碼為502

http_503:後端伺服器返回的響應狀態碼為503

http_504:後端伺服器返回的響應狀態碼為504

http_404 :後端伺服器返回的響應狀態碼為404

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

例子:

http
server指令

語  法:    server address [parameters];

預設值: —

上下文: upstream

max_fails=number:設定nginx與伺服器通訊的嘗試失敗的次數。在fail_timeout引數定義的時間段內,如果失敗的次數達到此值,nginx就認為伺服器不可用。在下乙個fail_timeout時間段,伺服器不會再被嘗試。失敗的嘗試次數預設是1。設為0就會停止統計嘗試次數,認為伺服器是一直可用的。可以通過指令proxy_next_upstream、fastcgi_next_upstream和 memcached_next_upstream來配置什麼是失敗的嘗試。預設配置時,http_404狀態不被認為是失敗的嘗試。

fail_timeout=time:設定伺服器被認為不可用的時間段以及統計失敗嘗試次數的時間段。在這段時間中,伺服器失敗次數達到指定的嘗試次數,伺服器就被認為不可用。預設情況下,該超時時間是10秒。

例子:

upstream name
採用這個方式需要注意的一點是,如果後端有不健康節點,負載均衡器依然會先把該請求**給該不健康節點,然後再**給別的節點,這樣就會浪費一次**。

Nginx系列(八 nginx日誌)

remote addr,http x forwarded for 記錄客戶端ip位址 remote user 記錄客戶端使用者名稱 request 記錄請求的url和http協議 status 記錄請求狀態 body bytes sent 傳送給客戶端的位元組數,不包括響應頭的大小 該變數與apac...

自帶nginx 配置 Nginx 的目錄瀏覽功能

最近我就正好需要將一些靜態的 html 頁面部署到伺服器上,讓自己的多台裝置能隨時隨地進行檢視。經過搜尋之後找到了兩個方法 一是使用 node 的 http server 二是使用 nginx 自帶的 ngx http autoindex module 模組。由於我自己的部落格就是使用 nginx ...

Nginx系列(十三 nginx負載均衡)

負載均衡 upstream webserver 反向 server web伺服器 server location php 1.輪詢 預設 upstream webserver2.weight upstream webserver3.ip hash 解決session共享問題 upstream web...