Nginx —— 分佈式session 之粘性Session實例

        用 Nginx 反向代理多臺服務器的時候,會出現 session 不同步的問題,如用戶在tomcat1中登錄,保存了用戶信息進 session 中,但是tomcat2中的 session 中沒有該用戶信息,如果用戶再次發出請求時分配到了 tomcat2 中,就會出現 找不到用戶 session信息,重新調整到登錄頁面的情況,所以,採用粘性session的方式,同一個IP的所有訪問請求都指定到同一個 tomcat中,這樣就解決了問題。因爲一個用戶的請求都會發送到同一臺服務器

步驟:

        tomcat部分:

        部署兩臺(或者多臺)tomcat,如果是同一臺電腦的話可以參考我的另一篇博客:https://blog.csdn.net/DGH2430284817/article/details/90417905

        web項目部分:

        把項目的war包放到每一個 tomcat 的 webapps 目錄下,這樣在 tomcat 啓動的時候,會自動解壓部署web項目

        nginx部分:

        修改conf目錄下的 nginx.conf 文件:

	upstream tomcatServer{ 
		#同一個ip訪問同一個服務器
		ip_hash;
		server 127.0.0.1:8080;
		server 127.0.0.1:8082;
	}
 
    server {
        listen       80;
        server_name  localhost;
 
        location / {
			proxy_pass  http://tomcatServer/;
        }
 
       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
 
    }

最重要的就是 ip_hash 這個配置,這是nginx自帶的,可以實現同一個ip分配到同一個代理服務器

 

最後啓動nginx和tomcat就可以了,session的問題就解決了

 

注意:

        在分佈式 session 的三種解決方法中,以上這種是最簡單的,而且資源消耗也是最小的,但是缺點就是其中一臺tomcat 崩潰後,裏面的 session 數據就全沒了,單點故障危險大。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章