Nginx反向代理如何實(shí)現(xiàn)會(huì)話保持

一、ip_hash:

ip_hash使用源地址哈希算法,將同一客戶端的請(qǐng)求總是發(fā)往同一個(gè)后端服務(wù)器,除非該服務(wù)器不可用。

ip_hash語(yǔ)法:

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

ip_hash簡(jiǎn)單易用,但有如下問(wèn)題:

  • 當(dāng)后端服務(wù)器宕機(jī)后,Session會(huì)丟失;

  • 來(lái)自同一局域網(wǎng)的客戶端會(huì)被轉(zhuǎn)發(fā)到同一個(gè)后端服務(wù)器,可能導(dǎo)致負(fù)載失衡;

  • 不適用于cdn網(wǎng)絡(luò),不適用于前段還有代理的情況。

二、sticky_Cookie_insert:

使用sticky_cookie_insert啟用會(huì)話親緣關(guān)系,這會(huì)導(dǎo)致來(lái)自同一客戶端的請(qǐng)求被傳遞到一組服務(wù)器在同一臺(tái)服務(wù)器。與ip_hash不同之處在于,它不是基于ip來(lái)判斷客戶端的,而是基于cookie來(lái)判斷。因此可以避免上述ip_hash中來(lái)自同一局域網(wǎng)的客戶端和前段代理導(dǎo)致負(fù)載失衡的情況。

語(yǔ)法:

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

說(shuō)明:

  • expires:設(shè)置瀏覽器中保持cookie的時(shí)間

  • domain:定義cookie的域

  • path:為cookie定義路徑

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊5 分享