Nginx負載均衡的SESSION共享問題解決方案

2021-09-29 23:31:22 字數 1756 閱讀 3225

什麼是反向**以及什麼是正向**:

1、反向**方式,是指以**伺服器來接受internet上的連線請求,然後將請求**給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時**伺服器對外就表現為乙個反向**伺服器;

2、正向**,是乙個位於客戶端和原始伺服器之間的伺服器,為了從原始伺服器取得內容,客戶端向**傳送乙個請求並指定目標(原始伺服器),然後**向原始伺服器轉交請求並將獲得的內容返回給客戶端。客戶端才能使用正向**。

關於反向和正向 proxy推薦link:

link:

什麼是動靜分離:

將靜態資源(html,js,jquery,img等)資料和後端**分開放置在反向**伺服器上(或者cdn伺服器),後端應用提供api,根據前端的請求進行處理,並將處理結果通過json格式返回至前端。

什麼是負載均衡:

資料流量分攤到多個伺服器上執行,減輕每台伺服器的壓力,多台伺服器共同完成工作任務,從而提高了資料的吞吐量。

例如:一台反向**伺服器和兩台應用伺服器

一台反向**伺服器通過ip_hash來限制每個請求的ip發放給指定的應用伺服器,這樣可以避免session共享問題;

負載均衡策略:

1.輪詢

這種是預設的策略,把每個請求按順序逐一分配到不同的server

缺點是:可靠性低和負載分配不均衡。

upstream  suyi  

2.最少連線

把請求分配到連線數最少的server

upstream  suyi  

3.權重

使用weight來指定server訪問比率,weight預設是1。用於後端伺服器效能不均的情況。

upstream  suyi

4.ip_hash

每個請求會按照訪問ip的hash值分配,這樣同一客戶端連續的web請求都會被分發到同一server進行處理,可以解決session的問題。

upstream  suyi

ip_hash可以和weight結合使用。

5.fair(第三方)

按後端伺服器的響應時間來分配請求,響應時間短的優先分配。與weight分配策略類似。

upstream suyi

5、url_hash(第三方)

按訪問url的hash結果來分配請求,使每個url定向到同乙個後端伺服器,後端伺服器為快取時比較有效。

upstream backserver

配置進入nginx\conf目錄,編輯nginx.conf,在#gzip on;這一行下開始配置

關於nginx.conf的配置推薦link:

upstream  suyi  

server

}配置兩個地方,第乙個是upstream,另乙個是proxy_pass http:// ***

注意upstream 後面的名字需要和server中的location下的proxy_paxx http:// 後的內容相同

session共享問題解決方案:

由於請求先通過nginx**伺服器,再有nginx伺服器分配請求到具體的應用伺服器中間就會遇到session共享問題:

1.ip_hash 根據ip分配請求的應用伺服器

2.不使用session,換cookie就不會存在此問題,但是**安全度降低

3.使用cookie和redis快取(建議此方案,方便擴充套件,快取中速度高效)

例如:生成乙個uuid作為使用者資訊的key存放在redis快取中,再將uuid作為cookie的值寫會客戶端,cookie的key可以用固定值(常量)

nginx 負載均衡 Nginx負載均衡策略

nginx提供的負載均衡策略有2種 內建策略和擴充套件策略。內建策略為輪詢 預設 加權輪詢,ip hash,第三方。upstream mysvr1 輪詢 每個請求按照時間順序逐一的分配到每乙個後台伺服器上。如果某台伺服器宕機了,將會自動的剔除宕機的服務。nginx預設就是輪詢其權重都預設為1,伺服器...

nginx負載均衡

nginx 的 upstream目前支援 4 種方式的分配 1 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。2 weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。3 ip hash 每個請求按訪問ip的hash...

nginx負載均衡

nginx s stop quick exit nginx s quit graceful quit nginx s reload changing configuration,starting a new worker,quitting an old worker gracefully nginx...