2 zcy1222 zcy1222 于 2016.05.11 14:47 提问

nginx+tomcat session 丢失

nginx tomcat memcached
现在公司内部有2台web 服务器 49 和45
49安装了 nginx 2个tomcat memcached 45安装了 tomcat

如果把45服务器关闭掉 49的2个tomcat可以完成负载 但是把45的tomcat 启动起来
如果请求在2台服务器里 相互跳转 session 就会丢失 页面上面打印session id 也是
跳转一次 就变一次
但是 我同样的配置 在阿里云的2台服务器上面 又不会有这个问题 就是公司内部出问题的 公司内部2个服务器 是通过交换机连接在一起的

下面是nginx的配置文件
[root@localhost conf]# cat nginx.conf

user root;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';

#access_log  logs/access.log  main;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;
upstream 365hospital{
    server 192.168.31.49:8001 weight=5;
    server 192.168.31.45:8001 weight=5;
    jvm_route $cookie_JSESSIONID|sessionid reverse;
    }
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        proxy_pass http://365hospital;
        proxy_redirect default;
        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 192.168.31.49;
        proxy_cookie_path /ROOT/ /;
        proxy_cookie_path /ROOT /;
        proxy_set_header Cookie $http_cookie;

    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#    listen       8000;
#    listen       somename:8080;
#    server_name  somename  alias  another.alias;

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}


# HTTPS server
#
#server {
#    listen       443 ssl;
#    server_name  localhost;

#    ssl_certificate      cert.pem;
#    ssl_certificate_key  cert.key;

#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;

#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}

}

2个回答

CSDNXIAOC
CSDNXIAOC   2016.05.11 14:52

location / {
    proxy_pass: http://localhost:8080/abcde/
    proxy_cookie_path : /abcde/ /                   //一定需要,否则session出现问题

}......
答案就在这里:nginx tomcat session丢失
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

silehaixianghuirenj
silehaixianghuirenj   2016.10.08 01:22

omcat memcached 45安装了 tomcat
如果把45服务器关闭掉 49的2个tomcat可以完成负载 但是把45的tomcat 启动起来
如果请求在2台服务器里 相互跳转 session 就会丢失 页面上面打印session id 也是
跳转一次 就变一次
但是 我同样的配置 在阿里云的2台服务器上面 又不会有这个问题 就是公司内部出问题的 公司内部2个服务器 是通过交换机连接在一起的
下面是nginx的配置文件
[root@localhost conf]# cat nginx.conf
user root;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local]

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
解决nginx中proxy_pass到tomcat的session丢失问题:补充
解决nginx中proxy_pass到tomcat的session丢失问题新项目上线,部署在服务器上的其中一个tomcat下,访问时发现session失败。在浏览器里调试发现每次的cookies不同,并且比本地时多了一个Path:/xxx 属性。因为这个path和Nginx转发的名字一致,所以怀疑Nginx配置出了问题,搜索后发现Nginx 通过子域名转发多个在同一个tomcat下的项目要绑定coo
nginx反向代理(proxy_pass)tomcat导致session失效的问题解决
学习nginx http://www.nginx.cn/nginx-how-to  Nginx反向代理tomcat,很是方便,但是也有些细节的问题需要注意;今天遇到了这样一个问题,tomcat中路径“host/web1”,nginx中直接“host/”代理,这时候session就无法正常进行了。 问题描述: 登录后. 跳转http://127.0.0.1:8080/api/index.do 可
解决nginx中proxy_pass到tomcat的session丢失问题
一直以来我都是用nginx1.5.7来作为web服务器和代理服务器来使用,一直都是一个应用对应一个Tomcat也就是一个端口,也只对应一个域名。   今天把服务器上的Tomcat整合了一下,5个应用共用一个Tomcat。 最先出现的问题是,用户等进入后台时出现异常,找不到登录的用户信息!
nginx+tomcat负载均衡和session复制
本文介绍下传统的tomcat负载均衡和session复制. session复制是基于JVM内存的,当然在当今的互联网大数据时代,有更好的替代方案,如将session数据保存在Redis中. 1、安装Nginx        首先下载nginx,我下载的版本是1.11.4版本 .http://nginx.org/download/nginx-1.11.4.zip .
nginx和tomcat负载均衡后session无法共享的解决方案
1、不使用session,换用cookie session是存放在服务器端的,cookie是存放在客户端的,我们可以把用户访问页面产生的session放到cookie里面,就是以cookie为中转站。你访问web服务器A,产生了session然后把它放到cookie里面,当你的请求被分配到B服务器时,服务器B先判断服务器有没有这个session,如果没有,再去看看客户端的cookie里面有没
nginx+tomcat +memcached 解决会话同步(session)问题
本文查考借鉴:Nginx+Tomcat+Memcached集群Session共享 cookie是怎样工作的?  例如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是“Michael Jordan”,同时还对所创建的Cookie的属性如path、domain、expires等进行了指定。 
nginx + tomcat 导致session丢失的问题
niginx 在做反向代理的时候,如果代理的目录地址和用户访问的目录地址不在同一个层级下的时候,即   server { listen 80; server_name www.bzf.com; location / { proxy_pass http://127.0.0.1:8090/sso; } }   如上所示,若用户访问 www.bzf.com,则会被nginx代理到本地80
从tomcat移植到weblogic中session丢失的解决法
从tomcat移植到weblogic中session丢失 知道答案了。如果有也遇到这样问题的朋友希望 可以帮到你们,在WEB-INF下面新建 weblogic.xml weblogic.xml 中的代码为 http://www.bea.com/servers/wls610/dtd/weblogic-web-jar.dtd"> <wls:weblogic-web-app xm
nginx做了一层负载均衡代理,nginx转发请求给tomcat时,端口号已经丢失掉了
一个单点登录问题的解决 上周五的时候,一个同事问我一个单点登录的问题 。整个系统结构并不复杂,在webapp应用中配置一个sso应用的servlet 过滤器 ,这个过滤器会从指定的域名下拿cookie中保存的一个加密sessionid ,利用这个sessionid到sso系统中判断是否登录以及是否在登录有效期内,未登录则进入登录页面,登录成功后,通过一个浏览器的302重定向进
解决nginx使用proxy_pass反向代理时,session丢失的问题
nginx proxy_pass 反向代理 session丢失的问题