歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Nginx反向代理實現會話(session)保持的兩種方式

Nginx反向代理實現會話(session)保持的兩種方式

日期:2017/3/2 10:05:10   编辑:關於Linux

一、ip_hash:

ip_hash使用源地址哈希算法,將同一客戶端的請求總是發往同一個後端服務器,除非該服務器不可用。

ip_hash語法:

upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com down;
    server backend4.example.com;
}

ip_hash簡單易用,但有如下問題:

  • 當後端服務器宕機後,session會丟失;
  • 來自同一局域網的客戶端會被轉發到同一個後端服務器,可能導致負載失衡;
  • 不適用於CDN網絡,不適用於前段還有代理的情況。

二、sticky_cookie_insert:

使用sticky_cookie_insert啟用會話親緣關系,這會導致來自同一客戶端的請求被傳遞到一組服務器在同一台服務器。與ip_hash不同之處在於,它不是基於IP來判斷客戶端的,而是基於cookie來判斷。因此可以避免上述ip_hash中來自同一局域網的客戶端和前段代理導致負載失衡的情況。

語法:

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    sticky_cookie_insert srv_id expires=1h domain=xxxx.com path=/;
}

說明:

  • expires:設置浏覽器中保持cookie的時間
  • domain:定義cookie的域
  • path:為cookie定義路徑

另外還可以使用後端服務器自身通過相關機制保持session同步,後面會詳細介紹!

Copyright © Linux教程網 All Rights Reserved