内容简介:Nginx tomcat8.5集群 与 redis session 共享
(一) nginx配置tomcat集群
1.配置nginx.cnf文件如下:
server { listen 80 default_server; server_name _; return 444; #过滤其他域名的请求,返回444状态码 } server { listen 80; server_name wx.ppp.com; # www.aaa.com域名 location / { proxy_pass http://wx.ppp.com; # proxy_pass http://localhost:8088; # 对应端口号8088 #proxy_ignore_headers X-Accel-Expires Expires Cache-Control; #proxy_ignore_headers Set-Cookie; #proxy_hide_header Set-Cookie; #proxy_hide_header X-powered-by; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header Host $http_host; expires 10m; } } #服务器的集群 upstream wx.ppp.com { #服务器集群名字 server 127.0.0.1:8088 weight=1;#服务器配置 weight是权重的意思,权重越大,分配的概率越大。 server 127.0.0.1:38088 weight=1; }
(二)配置tomcat 与 redis session共享
1、安装redis
下载:wget -q http://download.redis.io/releases/redis-3.2.1.tar.gz 解压:tar -xzf redis-3.2.1.tar.gz 切换目录 cd ./redis-3.2.1 编译:make 安装:make install 运行:src/redis-server
2、 添加以下jar包:
tomcat85-session-redis-1.0.jar
jedis-2.9.0.jar
commons-pool2-2.4.2.jar
3、分别修改集群中tomcat的 context.xml 文件 ,在 Context下添加如下代码:
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" port="6379" database="0" maxInactiveInterval="60" />
4、重启tomcat ,若启动正常则配置成功。
5、浏览器中分别访问集群tomcat 中的页面,观察sessionid 是否一致。
6、创建读写session jsp,一个用来写session,一个用来读session。
read.jsp读取session中的 userId
<%@ page language="java" cmock="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" cmock="text/html; charset=UTF-8"> <title>Read session</title> </head> <body> Server : Server 1 (因需将页面部署在不同Tomcat,以测试能读取另一台Tomcat设置的Session,请自行设服务器标识)<br /> <%=request.getSession().getAttribute("userId")%> </body> </html>
write.jsp写入userId到session中
<%@ page import="java.util.Date"%> <%@ page language="java" cmock="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" cmock="text/html; charset=UTF-8"> <title>Write session</title> </head> <body> Server : Server 1 (因需将页面部署在不同Tomcat,以测试能读取另一台Tomcat设置的Session,请自行设服务器标识)<br /> Write session <% request.getSession().setAttribute("userId", new Date().getTime()); %> </body> </html>
分别将两个jsp文件放到tomcat中,在其中的一个tomcat中运行 write.jsp写入userId。然后其他tomcat中运行 read.jsp查看userId的值,发现会读取到第一个页面写入的userId,并且和其他tomcat中读取的值一致。大功告成!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- SpringSession+Redis实现集群会话共享
- 快速实现 Tomcat 集群 Session 共享
- Nginx tomcat8.5集群 与 redis session 共享
- spring-session实现分布式集群session的共享
- 搭建Tomcat集群&通过Redis缓存共享session的一种流行方案
- NGINX Plus R12提供了集群配置共享并改进了nginScript
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Hacker's Delight
Henry S. Warren Jr. / Addison-Wesley / 2002-7-27 / USD 59.99
A collection useful programming advice the author has collected over the years; small algorithms that make the programmer's task easier. * At long last, proven short-cuts to mastering difficult aspec......一起来看看 《Hacker's Delight》 这本书的介绍吧!