1. 程式人生 > 其它 >nginx正反向代理、負載均衡

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; 
}