nginx官方**:
例子:fastcgi_pass backend1;
location塊中配置此項,表示用反向**或直連fastcgi的方式連線後端服務,其中backend1、backend2為upstream配置,其中配置下游的ip&port列表和排程引數,見下文。
注意:fastcgi_pass與proxy_pass是互斥配置,不能同時生效。
1) 輪詢(預設) 每個請求按時間順序逐一分配到不同的後端伺服器。 weight指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況,weight預設值為1。
例如:upstream bakend
2) ip_hash 每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問乙個後端伺服器,可以解決session的問題。
例如:upstream bakend
3) hash 每個請求按訪問$hash_seed的hash結果分配。
例如:upstream bakend
4) fair(第三方)按後端伺服器的響應時間來分配請求,響應時間短的優先分配,需要第三方外掛程式。
upstream backend
5) url_hash(第三方) 按訪問url的hash結果來分配請求,使每個url定向到同乙個後端伺服器,後端伺服器為快取時比較有效。 例:在upstream中加入hash語句,server語句中不能寫入weight等其他的引數,hash_method是使用的hash演算法
upstream backend
例子:upstream bakend
proxy_pass http://bakend/;或fastcgi_pass backend; 為每個裝置的狀態設定為:
1) down 表示單前的server暫時不參與負載,一般用於標記故障機。
2) weight 預設為1.weight越大,負載的權重就越大。
3) max_fails :允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤
4) fail_timeout:max_fails次失敗後,暫停改服務的時間,超過時間後繼續向該服務傳送流量,預設為10s。
5) backup:備用伺服器,其它所有的非backup機器down或者忙的時候,啟用backup機器。
1) nginx 預設判斷失敗節點狀態以connect refuse和time out狀態為準,不以http錯誤狀態進行判斷失敗,因為http只要能返回狀態說明該節點還可以正常連線,所以nginx判斷其還是存活狀態;
2) 除非新增了fastcgi_next_upstream或proxy_next_upstream指令設定對404、502、503、504、500和time out等錯誤進行轉到備機處理;
3) 在next_upstream過程中,會對fails進行累加,如果備用機處理還是錯誤則直接返回錯誤資訊(但404不進行記錄到錯誤數,如果不配置錯誤狀態也不對其進行錯誤狀態記錄)
綜述,nginx記錄錯誤數量timeout和connect refuse是永遠被記錄錯誤狀態,而502、500、503、504只有在配置proxy_next_upstream或fastcgi_next_upstream後nginx才會記錄這4種http錯誤到fails中,當fails大於等於max_fails時,則該節點失效;
注意:fastcgi_next_upstream與proxy_next_upstream支援的錯誤並不一致:
當fastcgi的服務異常時,因為fastcgi_next_upstream不支援http_502錯誤,無法對fastcgi異常進行判斷,
所以fastcgi_pass與proxy_pass處理的規則也不相同:
fastcgi_pass
proxy_pass
輪詢缺省會將請求傳送到下乙個服務節點上
預設不會將請求傳送到下乙個服務節點上,直接拒絕請求
在proxy_next_upstream中配置http_502錯誤,則會將請求傳送到下乙個服務節點上
weight
缺省會將請求傳送到下乙個服務節點上
預設不會將請求傳送到下乙個服務節點上,直接拒絕請求
在proxy_next_upstream中配置http_502錯誤,則會將請求傳送到下乙個服務節點上
hash
預設不會將請求傳送到下乙個服務節點上,直接拒絕請求
預設不會將請求傳送到下乙個服務節點上,直接拒絕請求
在proxy_next_upstream中配置http_502錯誤,則會將請求傳送到下乙個服務節點上
nginx高階伺服器配置
當每個網路介面接收資料報的速度比核心處理這些包的快,允許傳送到佇列的資料報的最大數 一般預設128 用於調節系統同時發起的tcp連線數 一般預設128 如果該值太小,在併發的時候會造成鏈結超時或者重傳問題 配置系統中最多允許存在多少個tcp套接字不被關聯到任何乙個使用者檔案控制代碼上。如果超過這個數...
nginx的高階配置和優化
1 net.core.netdev max backlog 表示當網路介面接收資料報的速度大於核心處理這些包塊的時候,允許傳送到佇列的資料報的最大數目 2 net.ipv4.tcp max orphans最多允許多少個套接子不被關聯到任何乙個使用者檔案控制代碼上,只是為了預防簡單的dos攻擊。一般系...
nginx伺服器的高階配置
1 針對ipv4的核心的引數的配置優化 將引數的值最佳到linux系統的 etc sysctl.conf檔案中,然後使用如下命令使修改生效 sbin sysctl p常用的引數 1.1 net.core.netdev max backlog引數 當每個網路介面接收資料報的速率比核心處理這些包的速率快...