Nginx可以配置代理多臺服務器,當一臺服務器宕機以後,仍能保持系統可用。node
下面聊下經常使用的一些配置項。nginx
在http
配置下增長upstream
配置便可:算法
upstream nodes { server 192.168.10.1:8668; server 192.168.10.2:8668; }
upstream對配置的上游服務器按照默認的輪詢方式進行請求
。若是上游服務器掛掉,能本身主動剔除,無需手動干預。這種方式簡單快捷。可是若是上游服務器在配置不均衡的狀況下,是解決不了的。
因此nginx有其餘不少的配置項。下面就一一介紹一下。服務器
weight
和請求數量成正比,主要用於上游服務器配置不均衡的狀況。下面的配置中,192.168.10.2機器的請求量是192.168.10.1機器請求量的2倍。負載均衡
upstream nodes { server 192.168.10.1:8668 weight=5; server 192.168.10.2:8668 weight=10; }
每個請求按照請求的ip的hash
結果分配。這樣每個請求固定落在一個上游服務器,可以解決ip會話在同一臺服務器的問題。url
upstream nodes { ip_hash; server 192.168.10.1:8668; server 192.168.10.2:8668; }
按上游服務器的響應時間
來分配請求。響應時間短的優先分配。代理
upstream nodes { server 192.168.10.1:8668; server 192.168.10.2:8668; fair; }
按照訪問的url的hash
結果來分配請求,使每個url定向到同一個上游服務器。注意
:在upstream中加入hash語句。server語句中不能寫入weight等其餘的參數,hash_method是使用的hash算法。code
upstream nodes { server 192.168.10.1:8668; server 192.168.10.2:8668; hash $request_uri; hash_method crc32; }
下面再說下在upstream中經常使用的配置項:server
down
:表示當前的server不參與負載均衡。ip
weight
:默以爲1,weight越大,負載的權重就越大。
max_fails
:請求失敗的次數默以爲1。
fail_timeout
: max_fails次失敗後,暫停請求此臺服務器的時間。
backup
: 其餘所有的非backup機器down或者忙的時候,請求backup機器。因此這臺機器壓力會最輕。
upstream nodes { ip_hash; server 192.168.10.1:8668 down; server 192.168.10.2:8668 weight=2; server 192.168.10.3:8668; server 192.168.10.4:8668 backup; }