Nginx Session共享問(wèn)題解決方案解析
這篇文章主要介紹了Nginx Session共享問(wèn)題解決方案解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
Nginx解決Session共享問(wèn)題:
1.nginx或者h(yuǎn)aproxy做的負(fù)載均衡,用nginx做的負(fù)載均衡可以添加ip_hash這個(gè)配置;用haproxy做的負(fù)載均衡可以用balance source這個(gè)配置,從而使用一個(gè)IP的請(qǐng)求發(fā)到同一個(gè)服務(wù)器;
2.利用數(shù)據(jù)庫(kù)同步session;
3.利用cookie同步session數(shù)據(jù),但是安全性差,http請(qǐng)求都需要帶參增加了帶寬消耗;
4.Tomcat配置session共享;
5利用session集群存放Redis;
1:創(chuàng)建一個(gè)工程,啟動(dòng)兩個(gè)Tomcat
2:編寫一個(gè)servlet測(cè)試
package com.zn.servlet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/nginxSessionServlet") public class SessionIPServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("當(dāng)前請(qǐng)求端口:"+request.getLocalPort()); String action=request.getParameter("action"); //向Session中存放一個(gè)數(shù)據(jù) if(action.equals("setSession")){ request.getSession().setAttribute("username","zhangsan"); }else if(action.equals("getSession")){ response.getWriter().write((String)request.getSession().getAttribute("username")); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } }
3、沒(méi)有Nginx的訪問(wèn)效果展示
分別訪問(wèn)8080和8081
4.配置nginx.conf文件
upstream myserver{ ip_hash; server 127.0.0.1:8080; server 127.0.0.1:8081; } server{ listen 81; server_name www.bproject.com; location / { root html; proxy_pass http://myserver; index index.html index.htm; } }
5.再次訪問(wèn)
方法二、利用spring-session+Redis實(shí)現(xiàn)session共享
1:導(dǎo)入依賴
<!--spring boot 與redis應(yīng)用基本環(huán)境配置 --> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> <!--spring session 與redis應(yīng)用基本環(huán)境配置,需要開啟redis后才可以使用,不然啟動(dòng)Spring boot會(huì)報(bào)錯(cuò) --> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
2:創(chuàng)建controller測(cè)試
@RestController public class SessionController { @RequestMapping("/setSession") public String setSession(HttpServletResponse response, HttpServletRequest request) throws IOException { request.getSession().setAttribute("username","wang"); return "success"; } @RequestMapping("/getSession") public String getSession(HttpServletRequest request,HttpServletResponse response){ String username = (String) request.getSession().getAttribute("username"); return username; } }
3:application.properties文件
server.port=8082 #server.port=8083 #redis配置 spring.redis.password: wang2003
4:?jiǎn)?dòng)項(xiàng)目測(cè)試
結(jié)論:該方案配置簡(jiǎn)單,數(shù)據(jù)安全且穩(wěn)定,效率高,被普遍使用;
注意:在Redis中刪除這個(gè)數(shù)據(jù)包,8082和8083端口都get不到session了,說(shuō)明了session沒(méi)有存在在JVM中,而是轉(zhuǎn)存在Redis中;
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 詳解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中共享session會(huì)話配置方法例子
- 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)步驟
相關(guān)文章
nginx使用sticky基于cookie的會(huì)話保持方式
這篇文章主要介紹了nginx使用sticky基于cookie的會(huì)話保持方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12nginx鏡像構(gòu)建的知識(shí)點(diǎn)及方法步驟詳解
這篇文章主要為大家介紹了nginx鏡像構(gòu)建的知識(shí)點(diǎn)詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08nginx實(shí)現(xiàn)反向代理出現(xiàn)502的問(wèn)題解決
本文主要介紹了nginx實(shí)現(xiàn)反向代理出現(xiàn)502的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08nginx限制并發(fā)連接請(qǐng)求數(shù)的方法
這篇文章主要介紹了nginx限制并發(fā)連接請(qǐng)求數(shù)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09利用nginx搭建RTMP視頻點(diǎn)播、直播、HLS服務(wù)器
本文主要介紹了利用nginx搭建RTMP視頻點(diǎn)播、直播、HLS服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05