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

2021-09-14 07:04:02 字數 2034 閱讀 4117

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

每個請求會按照訪問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:// 後的內容相同

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

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

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

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

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

4.放到mysql資料庫中,不推薦(增加資料庫的io)

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...