文档章节

Nginx+Tomcat出现session丢失问题

艳沐石
 艳沐石
发布于 2014/09/23 22:31
字数 470
阅读 1225
收藏 2

Nginx作为一个强大的Web服务器,有很强的功能。在Nginx+Tomcat是Java Web动静分离的很好模型。但是,今天在配置过程中,遇到了一个问题,就是无法登录。由于之前在配置Apache的过程中,遇到过类似的问题,所以我很快确定了是由于sessionId在cookies中引起。

那么,我们如何在Nginx中配置,以避免这样的事情呢?我是通过如下代码来解决的。

场景描述一下:

我有一个二级域名mvn.domain.com,以及一个web程序,部署到我的服务器中,访问地址为:http://localhost:8081/nexus,通过我的域名,我希望反向代理到我的本地地址中。由于,我在部署本地应用的时候,不是链接到根目录(即root),导致我的应用程序的sessionId存储在/nexus的path下。而当我成功后,mvn.domain.com中,找不到对应的sessionId信息,导致会话失效。

解决方法一:

域名使用mvn.domain.com/nexus,反向代理到http://localhost:8081/nexus,可以解决如上问题。配置如下:

location /nexus/ {
                proxy_pass    http://localhost:8081/nexus/;
                proxy_redirect  off;
                proxy_set_header        Host    $http_host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header   Cookie $http_cookie;
                chunked_transfer_encoding       off;
        }
        location / {
                proxy_pass    http://localhost:8081/nexus/;
                proxy_redirect  http://localhost:8081/ http://mvn.domain.com/;
        }



解决方法二,

        location / {
                proxy_pass    http://localhost:8081/nexus/;
                proxy_redirect off;
                proxy_set_header        Host    $http_host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header   Cookie $http_cookie;                 
                rewrite ^/nexus/(.*)$ /$1 last;
                proxy_cookie_path /nexus /;
                chunked_transfer_encoding       off;
        }

说明:
1. 通过proxy_pass 来确定对应目录的跳转
2. 在多层代理中,填充Header请求头(proxy_set_header)
3. 将应用中访问的nexus路径rewrite到根路径下。
4. 将cookie_path为/nexus设置到根路径下。



© 著作权归作者所有

艳沐石
粉丝 3
博文 44
码字总数 24301
作品 0
大兴
程序员
私信 提问
nginx+tomcat +memcached

<TI> <T2> . / . . X . . / . <M1> <M2> Tomcat-1 (T1) 将 session 存储在 memcached-2 (T2)上。只有当 M2 不可用时,T1 才将 session 存 储在 memcached-1 上(M1 是 T1 failoverNode)。使用这......

我爱吃葱花
2014/03/31
0
0
Nginx+Tomcat关于Session的管理

系列文章 Nginx+Tomcat关于Session的管理 Tomcat Session管理分析 Spring-Session基于Redis管理Session 前言 Nginx+Tomcat对Session的管理一直有了解,但是一直没有实际操作一遍,本文从最简...

ksfzhaohui
2018/05/31
0
6
使用nginx+tomcat做集群时,如何同步shiro的session,保证可以完成正常的权限认证

各位好: 请教个问题,我的项目中使用了shiro做权限控制,在单机的情况下没问题,但是使用nginx+tomcat 做集群时,集群使用redis做了tomcat的session共享,验证的时候回出现问题,多次请求时...

刘朕
2017/03/01
930
5
集群中通过msm实现session共享,采用轮询的方式时session经常失效

最近有个任务是使用nginx+tomcat实现集群和负载均衡,同时结合使用memcached实现session共享。配置集群中没有什么问题,就是这个通过memcached+tomcat实现session共享这出现了问题,现在使用...

attacker
2013/11/14
1K
3
nginx+tomcat 另类负载均衡

一、部署背景 某服务器A:10.68.4.198 域名:edi.qnb.com ( tomcat应用,web 访问但须帐密认证,其他服务器连接查询却无须认证 ) 因业务需要,需要对A服务器做负载均衡。要求用nginx的upstr...

王九龙
2015/08/28
194
0

没有更多内容

加载失败,请刷新页面

加载更多

gradle grovvy中的闭包

1. 无参数的闭包 //这b1就是一个闭包def b1={ println "hello b1"}//定义方法,包含闭包类型的参数def method1(Closure closure){closure()}//执行method1method1(b1) 执行结果 ...

edison_kwok
21分钟前
2
0
基于Spring Boot + Dubbo的全链路日志追踪(一)

一、 概要 当前公司后端整体架构为:Spring Boot + Dubbo。由于早期项目进度等原因,对日志这块没有统一的规范,基本上是每个项目自己管自己的日志。这也对后面的问题排查带来了很大的困难,...

明天以后
今天
7
0
安装fastdfs文件服务器步骤

1、安装libfastcommon wget https://github.com/happyfish100/libfastcommon/archive/master.zip 解压后安装 cd fastcommon-master ./make.sh ./make.sh install 2、安装 FastDFS,从sourcef......

lsjlgo
今天
3
0
MySQL 5.7 免安装版配置

下载地址:https://dev.mysql.com/downloads/mysql/ 安装步骤 1.下载zip解压到目录下 2.配置环境变量 新建系统变量:MYSQL_HOME,值:D:\DevelopmentTool\Mysql-5.7.26-winx64 修改path变量:...

华山猛男
今天
7
0
java map的遍历

//从大的角度可以分为两类Set<String> set=map.keySet();这里面还可以分为3类, 从set的角度来分 //Set<Map.Entry<String, String>> entery=map.entrySet(); public class Test { public sta......

南桥北木
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部