Nginx Session共享问题解决方案解析

Nginx Session共享问题解决方案解析,第1张

NginxSession共享问题解决方案解析

本文详细介绍了Nginx会话共享问题的解决方案。原文根据示例代码非常详细,对大家的学习培训或者工作都有一定的参考价值,有需要的盆友可以参考一下。

本文详细介绍了Nginx会话共享问题的解决方案。原文根据示例代码非常详细,对大家的学习培训或者工作都有一定的参考价值,有需要的盆友可以参考一下。

Nginx处理会话共享问题:

1.nginx或者haproxy做的三层交换机,nginx做的三层交换机可以配置ip_hash用haproxy做的三层交换机,可以配置平衡源,然后按照一个IP的要求,发送到同一个网络服务器

2.使用数据库同步会话;;

3.cookie用于共享会话数据信息,但安全系数较差,必须引用http要求,增加了网络带宽消耗;

4.Tomcat配备了会话共享;

5使用会话集群存储Redis

1:建立工程项目,启动两只雄猫

2.编写一个servlet测试。

packagecom.zn.servlet; importjavax.servlet.ServletException; importjavax.servlet.annotation.WebServlet; importjavax.servlet.http.HttpServlet; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; importjava.io.IOException; @WebServlet("/nginxSessionServlet") publicclassSessionIPServletextendsHttpServlet{ protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ System.out.println("当今要求端口号:"request.getLocalPort()); Stringaction=request.getParameter("action"); //向Session中储放一个数据信息 if(action.equals("setSession")){ request.getSession().setAttribute("username","zhangsan"); }elseif(action.equals("getSession")){ response.getWriter().write((String)request.getSession().getAttribute("username")); } } protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ doPost(request,response); } }

3.没有Nginx的实际浏览效果。

分别浏览8080和8081

4.配备nginx.conf文件

upstreammyserver{ ip_hash; server127.0.0.1:8080; server127.0.0.1:8081; } server{ listen81; server_namewww.bproject.com; location/{ roothtml; proxy_passhttp://myserver; indexindex.htmlindex.htm; } }

再次浏览

模式二:使用spring-sessionRedis完成会话共享

1.引入并依赖

<!--springboot与redis运用基础自然环境配备--> <!--https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> <!--springsession与redis运用基础自然环境配备,必须打开redis后才能够应用,要不然起动Springboot会出错--> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>

2.创建一个控制器测试。

@RestController publicclassSessionController{ @RequestMapping("/setSession") publicStringsetSession(HttpServletResponseresponse,HttpServletRequestrequest)throwsIOException{ request.getSession().setAttribute("username","wang"); return"success"; } @RequestMapping("/getSession") publicStringgetSession(HttpServletRequestrequest,HttpServletResponseresponse){ Stringusername=(String)request.getSession().getAttribute("username"); returnusername; } }

3:application.properties文件

server.port=8082 #server.port=8083 #redis配备 spring.redis.password:wang2003

4:开始新项目检测。

结果:方案简单,网络信息安全、稳定、高效,应用广泛。

注意:在Redis中删除这个数据文件,端口号8082和8083无法获取会话,说明会话没有存储在JVM中,而是转移到Redis中;

文章里的内容就这些了。期待对大家的学习和培训有所帮助,也期待大家的应用。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/774619.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存