配置nginx分发之后处理session一致性方案

本文介绍了解决Tomcat集群环境下Session丢失的问题,提供了两种解决方案:一是通过Tengine的session_sticky特性来确保用户请求被粘滞到同一台服务器上;二是通过memcached实现session共享,确保session数据的一致性和可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

session丢失,因为每次刷新都重新分发tomcat,所有session丢失;
1,如果使用的是Tengine,可以使用粘滞: session_sticky 来解决
原理:用户访问网站分发到哪个tomcat,下次刷新分发,继续访问上次的tomcat
在Tengine的conf/nginx.conf
#insert + indirect模式:
upstream test {
session_sticky cookie=uid fallback=on path=/ mode=insert option=indirect;
server 127.0.0.1:8080;
}
server {
location / {
#在insert + indirect模式或者prefix模式下需要配置session_sticky_hide_cookie
#这种模式不会将保持会话使用的cookie传给后端服务,让保持会话的cookie对后端透明
session_sticky_hide_cookie upstream=test;
proxy_pass http://test;
}
}
service nginx restart 重启nginx生效

2,memcached缓存方案:
yum -y install memcached 安装memcached
service memcached start 安装完成之后启动
yum -y install telnet 安装telnet,用来测试memcached端口是否开通
telnet 192.168.188.3 11211 检测11211端口是否开通
quit 退出
tomcat 配置名称和 session 一致性配置:(其他服务tomcat也需要配置)
---------------------配置tomcat开始--------------------------------------------------
将 jar 包拷贝到 tomcat 的 lib 下

在 tomcat 的 server.xml 中配置 jvmRoute
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
在 context.xml 的 Context 配置 Manager 多个memcached的IP用空格分开
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1: 192.168.188.3:11211"
sticky="false"
lockingMode="auto"
sessionBackupAsync="false"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
sessionBackupTimeout="1000"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />
---------------------配置tomcat结束--------------------------------------------------
为了方便查看可以修改几个tomcat的index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF- 8"%> SessionID:<%=session.getId()%>
SessionIP:<%=request.getServerName()%>
<h1>tomcat1</h1>
然后重新启动tomcat,刷新页面


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值