Nginx中共享session會(huì)話配置方法例子
Session一般都指時(shí)域。在計(jì)算機(jī)術(shù)語(yǔ)中,Session是指一個(gè)終端用戶與交互系統(tǒng)進(jìn)行通信的時(shí)間間隔,通常指從注冊(cè)進(jìn)入系統(tǒng)到注銷(xiāo)退出系統(tǒng)之間所經(jīng)過(guò)的時(shí)間以及如果需要的話,可能還有一定的操作空間。
Session一般都指時(shí)域。在計(jì)算機(jī)術(shù)語(yǔ)中,Session是指一個(gè)終端用戶與交互系統(tǒng)進(jìn)行通信的時(shí)間間隔,通常指從注冊(cè)進(jìn)入系統(tǒng)到注銷(xiāo)退出系統(tǒng)之間所經(jīng)過(guò)的時(shí)間以及如果需要的話,可能還有一定的操作空間。
通常情況下能把session改成cookie,就能避開(kāi)session的一些弊端,在從前看的一本J2EE的書(shū)上,也指明在集群系統(tǒng)中不能用session,否則惹出禍端來(lái)就不好辦。如果系統(tǒng)不復(fù)雜,就優(yōu)先考慮能否將session去掉,改動(dòng)起來(lái)非常麻煩的話,再用下面的辦法。
應(yīng)用服務(wù)器自行實(shí)現(xiàn)共享
已知的,php可以用數(shù)據(jù)庫(kù)或memcached來(lái)保存session,從而在php本身建立了一個(gè)session集群,用這樣的方式可以令 session保證穩(wěn)定,即使某個(gè)節(jié)點(diǎn)有故障,session也不會(huì)丟失,適用于較為嚴(yán)格但請(qǐng)求量不高的場(chǎng)合。但是它的效率是不會(huì)很高的,不適用于對(duì)效率要求高的場(chǎng)合。
以上兩個(gè)辦法都跟nginx沒(méi)什么關(guān)系,下面來(lái)說(shuō)說(shuō)用nginx該如何處理:
ip_hash
nginx中的ip_hash技術(shù)能夠?qū)⒛硞€(gè)ip的請(qǐng)求定向到同一臺(tái)后端,這樣一來(lái)這個(gè)ip下的某個(gè)客戶端和某個(gè)后端就能建立起穩(wěn)固的
session,ip_hash是在upstream配置中定義的:
upstream backend{
server 127.0.0.1:8001;
server 127.0.0.1:8002;
ip_hash;
}
ip_hash是容易理解的,但是因?yàn)閮H僅能用ip這個(gè)因子來(lái)分配后端,因此ip_hash是有缺陷的,不能在一些情況下使用:
1、nginx不是最前端的服務(wù)器。ip_hash要求nginx一定是最前端的服務(wù)器,否則nginx得不到正確ip,就不能根據(jù)ip作hash。譬如使用 的是squid為最前端,那么nginx取ip時(shí)只能得到squid的服務(wù)器ip地址,用這個(gè)地址來(lái)作分流是肯定錯(cuò)亂的。
2、nginx的后端還有其它方式的負(fù)載均衡。假如nginx后端又有其它負(fù)載均衡,將請(qǐng)求又通過(guò)另外的方式分流了,那么某個(gè)客戶端的請(qǐng)求肯定不能定位到同一 臺(tái)session應(yīng)用服務(wù)器上。這么算起來(lái),nginx后端只能直接指向應(yīng)用服務(wù)器,或者再搭一個(gè)squid,然后指向應(yīng)用服務(wù)器。最好的辦法是用 location作一次分流,將需要session的部分請(qǐng)求通過(guò)ip_hash分流,剩下的走其它后端去。
upstream_hash
為了解決ip_hash的一些問(wèn)題,可以使用upstream_hash這個(gè)第三方模塊,這個(gè)模塊多數(shù)情況下是用作url_hash的,但是并不妨礙將它用來(lái)做session共享:
假如前端是squid,他會(huì)將ip加入x_forwarded_for這個(gè)http_header里,用upstream_hash可以用這個(gè)頭做因子,將請(qǐng)求定向到指定的后端:
這樣就改成了利用x_forwarded_for這個(gè)頭作因子,在nginx新版本中可支持讀取cookie值,所以也可以改成:
- 詳解Nginx反向代理實(shí)現(xiàn)會(huì)話(session)保持的兩種方式
- Nginx+Tomcat關(guān)于Session的管理的實(shí)現(xiàn)
- nginx+redis實(shí)現(xiàn)session共享
- nginx+tomcat實(shí)現(xiàn)負(fù)載均衡,使用redis session共享
- nginx 負(fù)載均衡 多站點(diǎn)共享Session
- nginx worker進(jìn)程循環(huán)的實(shí)現(xiàn)
- 詳解Nginx輪詢算法底層實(shí)現(xiàn)的方法
- Nginx根據(jù)url中的path動(dòng)態(tài)轉(zhuǎn)發(fā)到upstream的實(shí)現(xiàn)
- nginx搭建基于python的web環(huán)境的實(shí)現(xiàn)步驟
- Nginx Session共享問(wèn)題解決方案解析
相關(guān)文章
Nginx與安全相關(guān)的幾個(gè)配置小結(jié)
Nginx提供了一系列的安全相關(guān)參數(shù),可以幫助加固網(wǎng)站安全性,本文主要介紹了Nginx與安全相關(guān)的幾個(gè)配置小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02Nginx反向代理proxy_cache_path directive is not allowed錯(cuò)誤解決方法
這篇文章主要介紹了Nginx反向代理proxy_cache_path directive is not allowed錯(cuò)誤解決方法,需要的朋友可以參考下2015-04-04基于Nginx+lua實(shí)現(xiàn)簡(jiǎn)單的XSS攻擊攔截
WAF即web應(yīng)用防火墻,Nginx是一個(gè)主流的代理服務(wù),除了本身的Nginx日志,作為用戶肯定也支持對(duì)請(qǐng)求信息進(jìn)行操作,?很多都是通過(guò)在代理服務(wù)器上掛載規(guī)則特征,實(shí)現(xiàn)軟件層面的軟WAF進(jìn)行WEB防護(hù),本文主要給大家介紹了Nginx+Lua實(shí)現(xiàn)一個(gè)簡(jiǎn)單的XSS攻擊攔截,需要的朋友可以參考下2024-01-01修改nginx站點(diǎn)根目錄總結(jié)經(jīng)驗(yàn)(小結(jié))
這篇文章主要介紹了修改nginx站點(diǎn)根目錄總結(jié)經(jīng)驗(yàn)(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06nginx使用內(nèi)置模塊配置限速限流的方法實(shí)例
Nginx現(xiàn)在已經(jīng)是最火的負(fù)載均衡之一,在流量陡增的互聯(lián)網(wǎng)面前,接口限流也是很有必要的,尤其是針對(duì)高并發(fā)的場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于nginx使用內(nèi)置模塊配置限速限流的相關(guān)資料,需要的朋友可以參考下2022-05-05Centos7安裝、卸載nginx及配置,配置成系統(tǒng)服務(wù)方式(一步到位)
這篇文章主要介紹了Centos7安裝、卸載nginx及配置,配置成系統(tǒng)服務(wù)方式(一步到位),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12