解决nginx中proxy_pass到tomcat的session丢失问题
之前在配置tomcat的时候都是一个项目对应一个tomcat,也就是一个端口。最近需要把两个项目整合到同一个tomcat中,通过配置nginx让两个域名指向同一tomcat的不同项目。整合完毕后发现其中一个项目的后台管理系统登录不了了。经过调试发现原来是session丢失了。上网查了之后得到解决方案。现记录下来作为备忘。
文章转自:http://blog.csdn.net/yakson/article/details/46683285
*****************************************************************************************************************************************************************************************
引言
一直以来我都是用nginx1.5.7来作为web服务器和代理服务器来使用,一直都是一个应用对应一个Tomcat也就是一个端口,也只对应一个域名。
今天把服务器上的Tomcat整合了一下,5个应用共用一个Tomcat。
最先出现的问题是,用户等进入后台时出现异常,找不到登录的用户信息!
经调试发现是request请求变成了多个,并且session也不一致,感觉就像是另一个浏览器在访问,得出结论:肯定是session丢失了!
原因
经过认真的分析,得出结论:问题出在Nginx的配置上!
server_name www.weixin4j.org;
charset utf-8;
root /opt/apache-tomcat-7.0.53/webapps/weixin4j/;
location / {
proxy_pass http://127.0.0.1:8180/weixin4j/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
此配置会导致cookie存储的位置不是基于“/”那么在第二次访问的时候会从新创建session,因此session中的信息丢失。
解决方案
修改cookie的存储路径
server_name www.weixin4j.org;
charset utf-8;
root /opt/apache-tomcat-7.0.53/webapps/weixin4j/;
location / {
proxy_pass http://127.0.0.1:8180/weixin4j/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header From www.weixin4j.org;
proxy_cookie_path /weixin4j/ /;
proxy_set_header Cookie $http_cookie;
}
重启服务,测试!
通过!
解决nginx中proxy_pass到tomcat的session丢失问题的更多相关文章
- 解决nginx使用proxy_pass反向代理时,session丢失的问题
这2天在测试Nginx作为反向代理到Tomcat应用时,session丢失的问题.经过一系列查看官方文档和测试,发现如下:1.如果只是host.端口转换,则session不会丢失.例如: ...
- nginx中proxy_pass小斜杠
nginx中proxy_pass小斜杠 1. 故事背景 相信做微信公众号开发的朋友都知道,要想在微信中预览效果,必须使用域名访问.很多朋友使用内网穿透工具.不仅不好用还不稳定.所以,发挥脸厚吃天下的态 ...
- Spring Boot+AngularJS中因为跨域导致Session丢失
http://blog.csdn.net/dalangzhonghangxing/article/details/52446821 如果还在为跨域问题烦恼,请查看博主的 解决angular+sprin ...
- 解决网站在负载均衡环境下SESSION丢失的问题
在WEB场中,动态网页往往会因为几台主机做了负载而产生SESSION丢失的问题,网上也有很多的介绍,我这里只将我经历的过程给大家分享一下: 系统要运行在负载平衡的 Web 场环境中,而系统配置文件 ...
- 解决nginx proxy_pass反向代理cookie,session丢失的问题
参考地址:https://www.jianshu.com/p/34abe7eb6f0b 为什么cookie 会丢失? 比如说一个没有经过代理的地址 : http://127.0.0.1/project ...
- 解决nginx使用proxy_pass反向代理时,cookie丢失的问题
1. 如果只是host.端口转换,则cookie不会丢失.例如: location /project { proxy_pass http://127.0.0.1:8080/pr ...
- 解决nginx中fastcgi(php-fpm)60s超时的问题
在配置中加上 location ~ .*\.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 700; fastcgi_ ...
- 解决nginx中js修改不生效的问题
最近在做商城项目,使用nginx实现动静分离.结果在修改nginx文件夹下的js文件,浏览器访问网址现实的还是原来的旧的js文件.清理浏览器缓存,重启nginx均无效,最后在网上找到解决方案
- 解决IE中window.open打开链接refer丢失的问题
来源: http://www.coderanch.com/t/114767/HTML-CSS-JavaScript/nClick-window-open-loses-referrerHello,I h ...
随机推荐
- git error: unable to rewind rpc post data - try increasing http.postBuffer
error: unable to rewind rpc post data - try increasing http.postBuffererror: RPC failed; curl 56 Rec ...
- 3篇NeuroImage文献分析
鉴于之前读的一些文章很容易就忘掉了,故打算花点时间记录下所读的文献. 这几天花了一些时间读了3篇文献: Intersubject consistency of cortical MEG signals ...
- visual stuido 跨解决方案调试
visual stuido 跨解决方案调试 一个解决方案是一个第三方库,另一个是单独的程序.调试的时候要同时跟踪源码.因为第三方库并没有直接使用它的源码,而是使用生成的dll,直接进行调试比较麻烦,会 ...
- Python全栈开发【re正则模块】
re正则模块 本节内容: 正则介绍 元字符及元字符集 元字符转义符 re模块下的常用方法 正则介绍(re) 正则表达式(或 RE)是一种小型的.高度专业化的编程语言. 在Python中,它内嵌在Pyt ...
- office 365 Sharepoint 2013
平台环境: office 365 Sharepoint 2013 操作文件和文件夹 访问文档库的最佳方式是借助在 /_api/web 处可用的 GetFolderByServerRelativeUr ...
- css3-columns多列布局
/*css3中的布局*/ .wrapper{ margin:auto; width:300px; height:200px; border:2px dotted blue; -webkit-colum ...
- CFURLCreateStringByAddingPercentEscapes与CFURLCreateStringByReplacingPercentEscapesUsingEncoding
iOS中访问HTTP资源需要对URL进行Encode才能正确访问. OC中有方法: - (NSString *)stringByAddingPercentEscapesUsingEncoding:(N ...
- Java算法之递归打破及在真实项目中的使用实例
开心一笑 刚才领导问开发:"你觉得这个项目的最大风险是什么",开发说:"加班猝死" , 气氛尴尬了一分钟!!! 提出问题 1.递归算法简单复习 2.如何实现递归 ...
- eclipse开发servlet,HttpServletRequest报红叉解决方案
eclipse开发servlet,HttpServletRequest报红叉解决方案 今天突然间有兴致,想打一会代码,于是开发一个Servlet,代码和配置路径都没问题,HttpServlet居然报错 ...
- js与jq对数组的操作
一.数组处理 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长 ...