负载均衡NginxSession一致性
HTTPS 请求跳转
如下面的配置:
location /test { proxy_pass http://www.baidu.com/; }
在访问 URI 为 /test 时会跳转到百度,但此时浏览器中的 URL 也会发生变化。
这是因为:向 http://www.baidu.com/ 发送请求后, Nginx 返回的是一个跳转的响应。
此后, 客户端会重新向 https://www.baidu.com/ 发送请求(此过程不再经历 Nginx)。
所以,最终浏览器发生了跳转, 而非 Nginx 的负载均衡。
问题解决
将配置中的 http 改为 https 即可。
Session 一致性
在使用 Nginx 做反向代理时,如果后端服务器是 Tomcat 等动态服务器,则可能会出现 Session 一致性问题。
即: 无法确保同一个 Session 一定对应同一个 Server;
配置网络
下面使用 Docker 来演示。
配置 IP 地址:
并在 Server1 和 Server2 上启动 Tomcat。
配置 Server
在 Server 端创建 jsp 页面:
Server 1
[root@c5477d71795c ROOT]# pwd /var/lib/tomcat/webapps/ROOT [root@c5477d71795c ROOT]# cat index.jsp from 172.20.1.101
session=<%=session.getId()%>
Server 2
[root@c5477d71795c ROOT]# pwd /var/lib/tomcat/webapps/ROOT [root@c5477d71795c ROOT]# cat index.jsp from 172.20.1.102
session=<%=session.getId()%>
然后访问 http://172.20.1.101:8080/ 和 http://172.20.1.102:8080/。
可分别显示来自哪个 Server 和对应的 SessionId,并且刷新页面时 SessionId 不会变化(即使是使用 Ctrl+F5 刷新)。
配置 Nginx
修改 Nginx 的配置文件, 加入新的 upstream 配置和 server 配置。
upstream tomcat { server 172.20.1.101:8080; server 172.20.1.102:8080; } server { ...... location /cat { proxy_pass http://tomcat/; } }
重启 Nginx:
[root@ce12b3b4ce00 sbin]# ./nginx -s reload
访问 http://172.20.1.10/cat 并刷新,发现 from 172.20.1.10x 一直在变化,并且session=xxx 也变化。
说明:此时 Nginx 的配置无法保证 Session 一致性!
解决方案
在 Tomcat 后面部署 Redis,MemCached 等内存数据库来保存 Session 相关信息。
本例中在 Nginx 服务器上安装 memcached 来解决 Session 一致性问题。
安装 memcached
在 Nginx 容器中使用 yum 安装:
yum install -y memcached
启动 memcached
使用 memcached 命令启动:
memcached -d -m 128m -p 11211 -l 172.20.1.10 -u root -P /tmp/
参数说明:
-d: 后台启动 -m: 缓存大小 -p: 端口 -l: IP地址 -P: 服务启动后系统进程 ID 存储文件的目录 -u: 服务器以哪个用户作为管理用户
修改 Tomcat 配置
在两台 Server 中修改 tomcat 的配置:
[root@3a53f7504511 ROOT]# vi /etc/tomcat/context.xml # context标签中加入下面的内容
导入 jar 包使用 yum 安装的 Tomcat 可将 jar 包放在 /usr/share/java/tomcat/ 目录下。
需要的 jar 包:
Maven 依赖如下:
asm asm 3.2 com.couchbase.client couchbase-client 1.4.11 com.googlecode kryo 1.04 de.javakaffee kryo-serializers 0.11 de.javakaffee.msm memcached-session-manager 1.8.2 de.javakaffee.msm memcached-session-manager-tc7 1.8.2 com.googlecode minlog 1.2 de.javakaffee.msm msm-kryo-serializer 1.8.2 com.esotericsoftware reflectasm 1.01 net.spy spymemcached 2.11.4
注: 如果依赖和 Tomcat 版本不对应可能会什么也不显示,此时响应码为 500。
验证
上述步骤都正确配置之后, 再次访问 http://172.20.1.10/cat 并刷新会发现 SessionId 不再变化。
MEMS将主导陀螺仪?国外巨头已瓜分,国产还有机会吗?陀螺仪技术自问世以来,发展至今已有160余年历史,在导航制导与控制等领域,以及汽车消费电子等各种应用场景得到了广泛应用。中国中高端MEMS传感器基本为意法半导体博世等国外巨头把控,
互联网康复治疗国际平台在国家卫计委的部署下,2014年4月,国务院办公厅关于促进互联网医疗健康发展的意见正式发布。2015年5月16日上午,国家卫计委召开新闻发布会,正式对外发布了互联网医疗健康行动计划
散文岁月沧桑,人生没有太多的来日方长作者子墨十月走了,深秋也悄悄转了身,且越走越远,就在我们凝望的时候,季节更替,朝暮之间,秋风已经冷了,季节萧然,冬天来临,秋天将尽。四季更迭,这是人生中不变的风景,人生无常,时光流
油价调整最新消息11月7日调价,9295号汽油预计上调140元吨还有3天(11月7日24时),新一轮国内成品油调价窗口即将开启,随着国际油价创下3周半新高,成品油这一次涨幅也不小。按照最新第9个工作日油价调整周期变化,预计上调油价140元吨,折
CBA三消息山西新援开启合练,杜锋采访引热议,周琦回归有希望爱国篮,爱CBA,我是洛姐,小伙伴们看完记得点赞!山西队这个赛季暂时排在CBA联赛中的第二位,球迷们对于球队的表现非常满意,在杨学增指导的带领下,现在的山西队已经不仅仅是一支擅长进
但行好事莫问前程但行好事,莫问前程。笨鸟先飞,大器晚成。努力耕耘,终有收获。一日之计在于晨,一年之计在于春。一家之计在于和,一生之计在于勤。勿信他人言,躺平害死人。勤能补拙是良训,少壮不努力,老大
秋意渐浓,快去四明山上赏秋叶野花和红果撰文摄影林海伦经历了今年超长版的盛夏酷暑的炙烤,我们终于迎来凉爽宜人的秋季好时光。近几天,宁波城区的马路边就能看到许多行道树开始陆续变色了,银杏树无患子紫薇樱花榉树玉兰等等,几乎所
易门这座小城不矫情虽已立秋,但易门的夏天依旧喝冰可乐,躺凉席,吹南屯湖的风。要是再谈个小恋爱,那就完美了。当你的眼睛眯着笑我来自一座小城易门这座小城不矫情易门这座小城有长长窄窄的街道有大口龙里的激情
黑龙江游记之八十六佳木斯篇同江2参观拉哈苏苏海关旧址和广场后,上了出租车,去8公里以外的三江口参观,来同江主要来看三江口。三江口,全称三江口生态旅游区,以江汇于此,路始于此,海通于此而闻名。2000年建成,现为4
云南旅游记(四)第四部分。改线路20个人10个家庭团队游完玉龙雪山后,很快将按几天游分到不同团队里继续前行。我们10天游,还有12天,14天游。几天下来,大家都一致认为这个旅游行程管理非常好,团队
北京环球度假区开园一周年,对文旅行业有何启示?寒冬中,环球影城交出中国市场的答卷文莫丹亚双十一来临,各大旅游企业也纷纷加入了大促狂欢中。10月24日,北京环球度假区在淘宝飞猪支付宝和京东平台上新了多款双十一优惠产品,包括非指定