Nginx——Session共享

article/2025/9/17 10:14:54

文章目录

  • 其他文章
  • 1、Session共享
    • 1.1、session 一致性解决方案
      • 1.1.1、session 复制
      • 1.1.2、共享 session
    • 1.2、安装memcached
      • 1.2.1、 node2 和 node3 上安装 jdk 和 tomcat
      • 1.2.2、nginx1 上安装 memcached

其他文章

Nginx——安装Nginx1.6.1
Nginx——工作模型
Nginx——配置文件详解
Nginx——代理
Nginx——调优
Nginx——负载均衡策略
Nginx——Session共享
Nginx——动静分离

1、Session共享

在这里插入图片描述

http 协议是无状态的,即你连续访问某个网页 100 次和访问 1 次对服务器来说是没有 区别对待的,因为它记不住你。那么,在一些场合,确实需要服务器记住当前用户怎么办? 比如用户登录邮箱后,接下来要收邮件、写邮件,总不能每次操作都让用户输入用户名和密 码吧,为了解决这个问题,session 的方案就被提了出来,事实上它并不是什么新技术, 而且也不能脱离 http 协议以及任何现有的 web 技术。
session 的常见实现形式是会话 cookie(session cookie),即未设置过期时间 的 cookie,这个 cookie 的默认生命周期为浏览器会话期间,只要关闭浏览器窗口, cookie 就消失了。实现机制是当用户发起一个请求的时候,服务器会检查该请求中是否包 含 sessionid,如果未包含,则系统会创造一个名为 JSESSIONID 的输出 cookie 返回 给浏览器(只放入内存,并不存在硬盘中),并将其以 HashTable 的形式写到服务器的内 存里面;当已经包含 sessionid 是,服务端会检查找到与该 session 相匹配的信息,如 果存在则直接使用该 sessionid,若不存在则重新生成新的 session。这里需要注意的 是 session 始终是有服务端创建的,并非浏览器自己生成的。 但是浏览器的 cookie 被 禁止后 session 就需要用 get 方法的 URL 重写的机制或使用 POST 方法提交隐藏表单的 形式来实现。
首先我们应该明白,为什么要实现共享,如果你的网站是存放在一个机器上,那么是不 存在这个问题的,因为会话数据就在这台机器,但是如果你使用了负载均衡把请求分发到不同的机器呢?这个时候会话 id 在客户端是没有问题的,但是如果用户的两次请求到了两台 不同的机器,而它的 session 数据可能存在其中一台机器,这个时候就会出现取不到 session 数据的情况,于是 session 的共享就成了一个问题。

1.1、session 一致性解决方案

1.1.1、session 复制

tomcat 本身带有复制 session 的功能。(基本不用)

1.1.2、共享 session

需要专门管理 session 的软件, memcached 缓存服务,可以和 tomcat 整合,帮助 tomcat 共享管理 session。
在这里插入图片描述

1.2、安装memcached

1.2.1、 node2 和 node3 上安装 jdk 和 tomcat

[root@node2 apps]# rpm -ivh jdk-7u80-linux-x64.rpm
[root@node2 apps]# find / -name '*java*' #可以看出/usr/java/jdk1.7.0_80/ 
配置环境变量 
[root@node2 jdk1.7.0_80]# vim /etc/profile 
加入以下两行代码: 
export JAVA_HOME=/usr/java/jdk1.7.0_80 
export PATH=$PATH:$JAVA_HOME/bin 
让文件生效: 
[root@node2 apps]# source /etc/profile 
[root@node2 apps]# jps 
13894 Jps #说明 jdk 安装配置成功 
解压 apache-tomcat-7.0.69.tar.gz 
修改 ROOT/index.jsp,dG 全删后,添加: 
from 192.168.20.102 session=<%=session.getId()%> 
另外一台 node3 同样的安装配置操作。 
然后分别访问 node2 和 node3 都可以正常,刷新 session 也不会变。 
修改 nginx.confupstream rss {server 192.168.20.102:8080;server 192.168.20.103:8080;
} 
访问测试 http://www.sxthenhao.com/toms,刷新 session 一直改变。

1.2.2、nginx1 上安装 memcached

1、安装 libevent

  yum install libevent -y

2、安装 memcached

yum install memcached -y 

3、启动 memcached

memcached -d -m 128m -p 11211 -l 192.168.20.95 -u root -P /tmp/ -d:后台启动服务 -m:缓存大小 -p:端口 -l:IP -P:服务器启动后的系统进程 ID,存储的文件 -u:服务器启动是以哪个用户名作为管理用户 

1.8.3 配置 session 共享(node2 和 node3)
1、拷贝 jar 到 tomcat 的 lib 下,jar 包见附件
在这里插入图片描述
在这里插入图片描述
2、配置 tomcat,每个 tomcat 里面的 context.xml 中加入

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.20.105:11211" sticky="false" lockingMode="auto" sessionBackupAsync="false" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.Kry oTranscoderFactory"/> 

tomcat 添加 jar 包和配置信息之后需要重启

我是小白弟弟,一个在互联网行业的小白,立志成为一名架构师
https://blog.csdn.net/zhouhengzhe?t=1


http://chatgpt.dhexx.cn/article/XgZ35YH8.shtml

相关文章

Springboot整合springsession实现session共享

Springboot整合springsession实现session共享 简介 session我们之前有介绍过&#xff08;可见springboot整合springsecurity&#xff09;&#xff0c;简单来说就是将用户信息或者数据存储在服务器上&#xff0c;通常用于验证用户身份或者避免通过获取相关信息。 但是&#x…

集群产生的session共享问题

前言&#xff1a; 为了解决集群产生的session共享问题&#xff0c;我们首先需要知道以下三个概念&#xff1a; cookiesessionnginx ​ 下面将逐个分析。 Cookie 1.Cookie是什么 ​cookie的中文翻译是曲奇&#xff0c;小甜饼的意思。cookie其实就是一些数据信息&#xff0c…

Websocket Session 共享解决

Websocket Session 共享解决&#xff08;方案一&#xff09; 既然Websocket Session 不能直接序列化然后存储&#xff0c;而且如果用户请求的时候&#xff0c;开始与集群中的A 节点创建链接&#xff0c;就算把这个 Session 拿到B 节点去再给用户Push 消息&#xff0c;应该也…

使用redis实现session共享

继上一遍文章&#xff0c;使用nginx实现负载均衡以后&#xff0c;新的问题又产生了&#xff0c;当使用负载均衡以后&#xff0c;我们如何实现session共享&#xff0c;因为session是保存在服务端的&#xff0c;对于单体应用来说这不是问题&#xff0c;因为只有一个服务器&#x…

Session共享问题-session原理

问题1&#xff1a;微服务情况下。域名不同。session不共享 问题2&#xff1a;分布式系统下。同一个域名下&#xff0c;多个服务。session会出现不同步问题&#xff08;例如第一次访问的是A服务&#xff0c;保存了。第二次访问了B,查询到的还是没信息&#xff09; 解决&#xf…

Springboot:Session共享

1、概述 传统单机web应用中&#xff0c;一般使用tomcat/jetty等web容器时&#xff0c;用户的session都是由容器管理。浏览器使用cookie中记录sessionId&#xff0c;容器根据sessionId判断用户是否存在会话session。这里的限制是&#xff0c;session存储在web容器中&#xff0c…

Java -- SpringSession实现session共享

在集群系统中&#xff0c;经常需要将 Session 进行共享。不然会出问题&#xff1a;用户在系统A上登陆以后&#xff0c;假如后续的一些操作被负载均衡到系统B上面&#xff0c;系统B发现本机上没有这个用户的 Session &#xff0c;会强制让用户重新登陆。 如在同域名&#xff0c…

shiro分布式session共享

当我们开发的程序需要跑在多个tomcat容器或者多台机器上时&#xff0c;shiro的默认session存储就不能满足我们的需求了&#xff0c;其中shiro默认的session是存储在运行jvm内存中的&#xff0c;使用的AbstractSessionDAO抽象类的一个子类MemorySessionDAO&#xff0c;当我们需要…

tomcat+redis实现session共享

注意&#xff1a;在实际应用中&#xff0c;发现该方案会不定期导致Tomcat假死&#xff08;怀疑Redis连接未释放&#xff09;&#xff0c;慎用。 服务器192.168.14.132和192.168.14.133&#xff0c; 均已经安装tomcat&#xff0c;tomcat安装过程不再赘述。 采用192.168.14.132…

Session共享问题

Session共享及Session保持或者叫做Session⼀致性 1、Session问题原因分析 出现这个问题的原因&#xff0c;从根本上来说是因为Http协议是无状态的协议。客户端和服务端在某次会话中产生的数据不会被保留下来&#xff0c;所以第⼆次请求服务端无法认识到你曾经来过&#xff0c;…

session共享(redis实现)

引言 大厂很多项目都是部署到多台服务器上&#xff0c;这些服务器在各个地区都存在&#xff0c;当我们访问服务时虽然执行的是同一个服务&#xff0c;但是可能是不同服务器运行的&#xff1b; 在我学习项目时遇到这样一个登录情景&#xff0c;假设有如下三台服务器&#xff0…

如何实现session共享的几种解决方案?

先了解一下为什么会出现这种session共享的解决方案&#xff1f; 随着互联网公司的项目在微服务和分布式的环境下进行的搭建&#xff0c;导致一个项目可能分别部署在几个甚至很多的服务器集群下&#xff0c;此时就会出现一个问题当用户进行一个session会话的时候&#xff0c;比…

session共享几种方式

Session共享三种方式 1.nginx基于ip_hash负载均衡。 只需要更改nginx.conf配置文件。添加ip_hash就可以了。 缺点&#xff1a;1.由于ip_hash分配tomcat的时候用的是除法&#xff0c;所以新添加一台服务器会导致分配不到原来程序上&#xff0c;session会丢失。2.同一个公网ip…

session共享学习

一、Session共享 1 什么是Session共享    是指在一个浏览器对应多个Web服务时&#xff0c;服务端的Session数据需要共享。 2 Session共享应用场景 单点登录Web服务器集群等 3 Session共享常见的解决方案 3.1 Session复制       通过对应用服务器的配置开启服务器的Sess…

redis实现session共享

session共享 什么是session&#xff1f; 由于 HTTP 协议是无状态的协议&#xff0c;所以服务端需要记录用户的状态时&#xff0c;就需要用某种机制来识具体的用户。Session 是另一种记录客户状态的机制&#xff0c;不同的是 Cookie 保存在客户端浏览器中&#xff0c;而 Sessi…

UART协议概述与实现

UART协议概述&#xff08;一&#xff09; 协议描述关键代码逻辑写在最后 协议描述 常见的三大低速通信协议之一&#xff0c;UART&#xff0c;通用异步收发协议。非常简单的协议&#xff0c;协议细节不需要多说&#xff0c;只说需要注意的点。空闲位为高位&#xff0c;起始位为…

UART协议简述及编程

UART原理简述 通用异步收发器简称UART&#xff08;universal asynchronous receiver transmitter&#xff09;。他的用途很广泛&#xff0c;一般常用的就是用来输出打印的信息&#xff0c;也可以外接各种模块&#xff0c;例如GPS和蓝牙等。 正是因为这种协议非常的简单可靠&…

UART协议及串口回环

UART协议及串口回环 一、异步通信的分类1、UART&#xff08;通用异步收发器&#xff09;2、RS4223、RS4854、Modbus5、接口标准 二、UART协议要求1、空闲状态2、起始位3、数据位4、校验位5、停止位6、波特率7、比特率 三、汉字发送四、串口回环uart_txuart_rxctrltop 五、参考六…

基于verilog的uart协议实现

目录 1、理论介绍 2、架构设计 3、代码设计 一、发送模块代码 二、接收代码设计 三、顶层模块设计 四、测试代码 4、仿真实验 1、理论介绍 uart&#xff1a;通用异步收发传输器&#xff08;Universal Asynchronous Receiver/Transmitter)&#xff0c;是一种串行的收发方式…

UART协议快速扫盲(图文并茂+超详细)

文章目录 1 UART发展历史1.1 早期的串行通讯设备1.2 早期的芯片级UART1.3 现代UART的发展 2 预备知识3 协议层起始位数据校验位停止位波特率 4 传输过程5 物理层6 优缺点 1 UART发展历史 1.1 早期的串行通讯设备 早期的电报机器使用长度可变的脉冲信号进行数据传输&#xff0…