nginx正反向代理、負載均衡
nginx
正向代理:
1、由客戶端發起。
2、代理伺服器 目標伺服器明確。
反向代理:
1、反向代理配置在服務端。
2、客戶端不知道訪問那一臺伺服器。
3、達到負載均衡,隱藏伺服器真正ip地址。
nginx location 路徑對映 匹配方式及優先順序
server塊中根據優先順序寫,先寫優先順序高的
Nginx負載均衡演算法(Nginx upstream)
1、輪詢(預設)
按照請求時間順序分配不同的後端服務,如果故障機器出現故障,自動剔除。
upstream bakend { server 192.168.0.1; server 192.168.0.2; }
2、weight(輪詢權值)
weight的值越大該伺服器訪問概率越高,主要用於伺服器效能不均很的情況,或者僅僅為在主從的情況下設定不同的權值,達到合理的利用主機資源。
upstream bakend {
server 192.168.0.1 weight=10;
server 192.168.0.2 weight=20;
}
3、ip_hash
請就按照雜湊演算法結果分配,同一個IP固定訪問同一個伺服器,可以解決動態網頁存在的session共享問題。
upstream bakend { ip_hash; server 192.168.0.1:8089 weight=10; server 192.168.0.2:8090 weight=20; }
4、fair(第三方)
根據頁面大小和載入時間長短智慧的分配伺服器進行負載均衡,也就是根據後端伺服器響應時間來動態地分配伺服器,響應時間短的優先分配。
注:如果使用這種必須安裝upstream_fair模組。
upstream bakend {
server 192.168.0.1:8089 weight=10;
server 192.168.0.2:8090 weight=20;
fair;
}
5、url_bash(三方)
按訪問的URL的雜湊結果來分配請求,使每個URL定向到一臺後端伺服器,可以進一步提高後端快取伺服器的效率。Nginx本身不支援url_hash,如果需要這種排程演算法,則必須安裝Nginx的hash軟體包。
按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器,後端伺服器為快取時比較有效
注:在upstream中加入hash語句,server語句中不能寫入weight等其他的引數,hash_method是使用的hash演算法。
upstream bakend {
server 192.168.0.1:8089 weight=10;
server 192.168.0.2:8090 weight=20;
hash $request_uri;
}
upstream狀態
down 表示單前的server暫時不參與負載.
weight 預設為1.weight越大,負載的權重就越大。
max_fails :允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤.
fail_timeout : max_fails次失敗後,暫停的時間。
backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。
upstream bakend{
ip_hash;
server 192.168.0.1:9090 down;
server 192.168.0.1:8080 weight=2;
server 192.168.0.1:8089;
server 192.168.0.1:8090 backup;
}