之前在配置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丢失问题的更多相关文章

  1. 解决nginx使用proxy_pass反向代理时,session丢失的问题

       这2天在测试Nginx作为反向代理到Tomcat应用时,session丢失的问题.经过一系列查看官方文档和测试,发现如下:1.如果只是host.端口转换,则session不会丢失.例如:     ...

  2. nginx中proxy_pass小斜杠

    nginx中proxy_pass小斜杠 1. 故事背景 相信做微信公众号开发的朋友都知道,要想在微信中预览效果,必须使用域名访问.很多朋友使用内网穿透工具.不仅不好用还不稳定.所以,发挥脸厚吃天下的态 ...

  3. Spring Boot+AngularJS中因为跨域导致Session丢失

    http://blog.csdn.net/dalangzhonghangxing/article/details/52446821 如果还在为跨域问题烦恼,请查看博主的 解决angular+sprin ...

  4. 解决网站在负载均衡环境下SESSION丢失的问题

    在WEB场中,动态网页往往会因为几台主机做了负载而产生SESSION丢失的问题,网上也有很多的介绍,我这里只将我经历的过程给大家分享一下:   系统要运行在负载平衡的 Web 场环境中,而系统配置文件 ...

  5. 解决nginx proxy_pass反向代理cookie,session丢失的问题

    参考地址:https://www.jianshu.com/p/34abe7eb6f0b 为什么cookie 会丢失? 比如说一个没有经过代理的地址 : http://127.0.0.1/project ...

  6. 解决nginx使用proxy_pass反向代理时,cookie丢失的问题

    1. 如果只是host.端口转换,则cookie不会丢失.例如:    location /project {        proxy_pass   http://127.0.0.1:8080/pr ...

  7. 解决nginx中fastcgi(php-fpm)60s超时的问题

    在配置中加上 location ~ .*\.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 700; fastcgi_ ...

  8. 解决nginx中js修改不生效的问题

    最近在做商城项目,使用nginx实现动静分离.结果在修改nginx文件夹下的js文件,浏览器访问网址现实的还是原来的旧的js文件.清理浏览器缓存,重启nginx均无效,最后在网上找到解决方案

  9. 解决IE中window.open打开链接refer丢失的问题

    来源: http://www.coderanch.com/t/114767/HTML-CSS-JavaScript/nClick-window-open-loses-referrerHello,I h ...

随机推荐

  1. django rest framework 再撸体验

    曾经了解过. 放在一边,嫌麻烦. 如今身为leader,站在团队沟通的角度看看,还不错. 有几个优点: 1. api一览表 2. api web预览界面(类似.net的webservice预览界面), ...

  2. Qt 程序打包发布

    Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,Qt 官方开发环境里自带了一个工具:windeployqt.exe.在Qt安装目录如:C:\Qt\Qt5.7. ...

  3. android adb 命令详解

    ADB (Android Debug Bridge)  是android SDK中的工具,需要先配置环境变量才能使用.起调试桥的作用,可以管理安卓设备.(也叫debug工具) ---------查看设 ...

  4. 搭建Android开发环境附图详解+模拟器安装(JDK+Eclipse+SDK+ADT)

    ——搭建android开发环境的方式有多种,比如:JDK+Eclipse+SDK+ADT或者JDK+Eclipse+捆绑好的AndroidSDK或者Android Studio. Google 决定将 ...

  5. sharepoint关键位置

    GAC:C:\Windows\assembly,也就是部署的位置: ISAPI位置,SharePoint API:C:\Program Files\Common Files\microsoft sha ...

  6. android初练二

    android 之 Activity的启动方式 1.android的显示启动 显示启动一般用于在用自己的活动时进行页面跳转时常常使用到 public class MainActivity extend ...

  7. tp框架实现ajax

    不墨迹,直接进主题. tp框架实现ajax 首先,我们先做一个testajax.html用来显示页面(只是一个简单的下拉列表^_^) <!DOCTYPE html PUBLIC "-/ ...

  8. 编译osgEarth2.8遇到gdal_vrt.h找不到的问题

    在编译plugins osgearth_gdal的ReaderWriterGDAL.cpp的时候可能会遇到这个问题 gdal_vrt.h这个头文件在gdal-1.11.0\frmts\vrt目录下,从 ...

  9. 简单的SQL语句

    说明:SQL语句大小写都可以,执行一句时,后面可不加分号,如果同时执行两句,就必须加分号,不然会报错. --+空格  是SQL的注释 表格名为users,里面有name和age属性 一.增 inser ...

  10. css实现隐藏滚动条

    demo1: html <div class="outer-container"> <div class="inner-container"& ...