每一個請求按時間順序逐一分配到不一樣的後端服務器,若是後端某臺服務器宕機,故障系統被自動剔除,使用戶訪問不受影響。html
upstream backend { server 192.168.0.1; server 192.168.0.1; }
weight 指定輪詢的權值,weight值越大,分配到的訪問機率越高,此策略主要用於後端每一個服務器性能不均的狀況下。nginx
upstream backend { server 192.168.0.1 weight=10; server 192.168.0.2 weight=20; # 這臺服務器性能好 因此設置weight=30 使之被訪問的概率最大 server 192.168.0.3 weight=30; }
每一個請求按訪問IP的hash結果分配,這樣來自同一個IP的訪客固定訪問一個後端服務器,能夠解決session不能跨服務器的問題。固然若是這個節點不可用了,會發到下個節點,而此時沒有session同步的話就註銷掉了。算法
upstream backend { ip_hash; server 192.168.0.1:88; server 192.168.0.1:80; }
請求被髮送到當前活躍鏈接最少的後端服務器。會考慮weight的值。若是有多個後端服務器的 conns 值同爲最小的,那麼對它們採用加權輪詢算法(weight)。後端
upstream backend { least_conn; server 192.168.0.1:88; server 192.168.0.1:80; }
根據後端服務器的響應時間來分配請求,響應時間短的優先分配。Nginx自己是不支持 fair 的,若是須要使用這種調度算法,必須下載Nginx的 upstream_fair 模塊。緩存
upstream backend { server 192.168.0.14:88; server 192.168.0.15:80; fair; }
此方法按訪問 url 的 hash 結果來分配請求,使每一個 url 定向到同一個後端服務器,能夠進一步提升後端緩存服務器的效率。Nginx 自己是不支持 url _ hash 的,若是須要使用這種調度算法,必須下載 Nginx 的 nginx_upstream_hash 模塊。服務器
upstream backend { server 192.168.0.1; server 192.168.0.2; hash $request_uri; hash_method crc32; }
upstream backend { server 192.168.0.1; server 192.168.0.2:8080 weight=1 max_fails=2 fail_timeout=30s ; server 192.168.0.3:8080 backup; } server { location / { proxy_pass http://backend; proxy_next_upstream error|timeout|..; } } weight:輪詢權值,默認值爲1。 down:表示當前的server暫時不參與負載。 max_fails:容許請求失敗的次數,默認爲1。當超過最大次數時,返回 proxy_next_upstream 模塊定義的錯誤。 fail_timeout:有兩層含義,一是在fail_timeout時間內最多允許max_fails次失敗;二是在經歷了max_fails次失敗之後,30s時間內不分配請求到這臺服務器。 backup : 備份機器。當其餘全部的非 backup 機器出現故障的時候,纔會請求backup機器,所以這臺機器的壓力最輕。 max_conns: 限制同時鏈接到某臺後端服務器的鏈接數,默認爲 0。即無限制。 proxy_next_upstream : 這個指令屬於 http_proxy 模塊的,指定後端返回什麼樣的異常響應
proxy_next_upstream 的參數說明請看這裏session