Nginx与session共享

本文详细介绍如何使用Nginx进行反向代理和负载均衡,同时深入探讨利用memcached实现跨服务器Session共享的方法,确保在分布式环境下保持用户会话状态的一致性。

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

大数据

安装配置Nginx

网上链接https://blog.youkuaiyun.com/a857553315/article/details/80378905

反向代理

在正向代理中,隐藏了客户端信息;

在反向代理中,隐藏了服务端信息;

反向代理的作用:
(1)保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
(2)负载均衡,通过反向代理服务器来优化网站的负载

通过nginx可使用两台或者多台tomcat,此时用户不直接和实现具体功能的tomcat通讯,而是使用代理nginx,由代理nginx根据用户需求寻找与之匹配的tomcat。

#keepalive_timeout 0;
​ keepalive_timeout 65;

#gzip  on;
    #upstream tom {
    #       server 192.168.125.100:8080;
    #       server 192.168.125.101:8080;
    #}

location / {

proxy_pass http://tom;

index index.jsp;

}

sessiony一致性问题

​ •session的常见实现形式是会话cookie(session cookie),即未设置过期时间的cookie,这个cookie的默认生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。实现机制是当用户发起一个请求的时候,服务器会检查该请求中是否包含session id,如果未包含,则系统会创造一个名为JSESSIONID的输出cookie返回给浏览器(只放入内存,并不存在硬盘中),并将其以Hash Table的形式写到服务器的内存里面;当已经包含session id,服务端会检查找到与该session相匹配的信息,如果存在则直接使用该session id,若不存在则重新生成新的session。

这里需要注意的是session始终是服务端创建的,并非浏览器自己生成的。

但浏览器的cookie被禁止后session就需要用get方法的URL重写的机制或使用POST方法提交隐藏表单的形式来实现

•Session共享

​ –首先我们应该明白,为什么要实现共享,如果你的网站是存放在一个机器上,那么是不存在这个问题的,因为会话数据就在这台机器,但是如果你使用了负载均衡把请求分发到不同的机器呢?这个时候会话id在客户端是没有问题的,但是如果用户的两次请求到了两台不同的机器,而它的session数据可能存在其中一台机器,这个时候就会出现取不到session数据的情况,于是session的共享就成了一个问题

共享session

​ 需要专门管理session的软件,

​ memcached 缓存服务,可以和tomcat整合,帮助tomcat共享管理session。

•安装memcached

–1、安装libevent

–2、安装memcached

–3、启动memcached

– memcached -d -m 128m -p 11211 -l 192.168.9.11 -u root -P /tmp/

– -d:后台启动服务

– -m:缓存大小

– -p:端口

– -l:IP

– -P:服务器启动后的系统进程ID,存储的文件

– -u:服务器启动是以哪个用户名作为管理用户

如果源配置了也可以用

yum –y install Memcached

•配置session共享如下:

–3、拷贝jar到tomcat的lib下,jar包见附件

–4、配置tomcat,每个tomcat里面的context.xml中加入

•<Manager className=“de.javakaffee.web.msm.MemcachedBackupSessionManager”

• memcachedNodes=“n1:192.168.9.11:11211”

• sticky=“false”

• lockingMode=“auto”

• sessionBackupAsync=“false”

• requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)$"

• sessionBackupTimeout=“1000” transcoderFactoryClass=“de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory”

•/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值