Nginx session丢失问题处理解决方法

在用nginx的反向代理tomcat的路径中,可能会出现session丢失问题。每发送一次请求 JESSIONID  都会发生改变,说明上一次形成的session丢失,从而创建新的session。

第一种情况:

 server{
    listen 80;
    server_name www.jiahemdata.com www.jiahemdata.cn;
    charset utf-8;
    location /{
      proxy_redirect off;
      proxy_pass http://127.0.0.1:8093;
      proxy_set_header Host $host;
      proxy_set_header Referer $http_referer;
      proxy_set_header X-Real-Ip $remote_addr;
      proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
    access_log logs/tomcat_access.log;
  }

由于当前对的nginx只是监听一个端口,不设定路径,所有一般不会出现session丢失的问题。

第二种情况:

 server{
    listen 80;
    server_name www.jiahemdata.com www.jiahemdata.cn;
    root /opt/tomcat-jhyx/webapps/jhyx/;
    charset utf-8;
    location /{
      proxy_pass http://127.0.0.1:8093/jhyx/;
      proxy_set_header Host $host;
      proxy_set_header Referer $http_referer;
      proxy_set_header X-Real-Ip $remote_addr;
      proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
    access_log logs/tomcat_access.log;
  }

这种情况,指定了tomcat的文件夹,不仅仅是一个端口监听,会导致每次请求都会发生变化,导致session丢失。

第三种情况:

 server{
    listen 80;
    server_name www.jiahemdata.com www.jiahemdata.cn;
    root /opt/tomcat-jhyx/webapps/jhyx/;
    charset utf-8;
    location /{
      proxy_redirect off;
      proxy_pass http://127.0.0.1:8093/jhyx/;
      proxy_cookie_path /jhyx/ /; //设置cookie路径,从而不导致每次发生请求发生变化。
      proxy_cookie_path /jhyx /;
      proxy_set_header Host $host;
      proxy_set_header Referer $http_referer;
      proxy_set_header X-Real-Ip $remote_addr;
      proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
    access_log logs/tomcat_access.log;
  }

这时候,发现你的问题依然没有解决,这时候你在想,我明明已经设置cookie路径了,怎么还不行呢,那是因为你请求的时候没有发送cookie。

 第四种情况:

 server{
    listen 80;
    server_name www.jiahemdata.com www.jiahemdata.cn;
    root /opt/tomcat-jhyx/webapps/jhyx/;
    charset utf-8;
    location /{
      proxy_redirect off;
      proxy_pass http://127.0.0.1:8093/jhyx/;
      proxy_cookie_path /jhyx/ /;
      proxy_cookie_path /jhyx /;
      proxy_set_header Host $host;
      proxy_set_header Referer $http_referer;
      proxy_set_header Cookie $http_cookie;  //请求发送时携带cookie信息
      proxy_set_header X-Real-Ip $remote_addr;
      proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
    access_log logs/tomcat_access.log;
  }

希望你在茫茫网络,找到一个正确的解决方法。

到此这篇关于Nginx session丢失问题处理解决方法的文章就介绍到这了,更多相关Nginx session丢失内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Nginx中共享session会话配置方法例子

    Session一般都指时域.在计算机术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间以及如果需要的话,可能还有一定的操作空间. Session一般都指时域.在计算机术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间以及如果需要的话,可能还有一定的操作空间. 通常情况下能把session改成cookie,就能避开session的一些弊端,在从前看的一本J2EE的

  • Nginx+Tomcat关于Session的管理的实现

    前言 Nginx+Tomcat对Session的管理一直有了解,但是一直没有实际操作一遍,本文从最简单的安装启动开始,通过实例的方式循序渐进的介绍了几种管理session的方式. nginx安装配置 1.安装nginx [root@localhost ~]# yum install nginx 提示报如下错误: No package nginx available. 解决办法安装epel:EPEL是企业版 Linux 附加软件包的简称,EPEL是一个由Fedora特别兴趣小组创建.维护并管理的,

  • nginx+tomcat实现负载均衡,使用redis session共享

    环境准备 1.准备一台nginx服务器 ip192.168.1.133 端口81 安装过程: #首先安装依赖: yum -y install gcc-c++ yum -y install pcre pcre-devel yum -y install zlib zlib-devel yum -y install openssl openssl-devel #注意 : 安装nginx必须使用 root 用户安装 #创建一个nginx目录 mkdir /usr/local/src/nginx #进入到

  • Nginx Session共享问题解决方案解析

    这篇文章主要介绍了Nginx Session共享问题解决方案解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Nginx解决Session共享问题: 1.nginx或者haproxy做的负载均衡,用nginx做的负载均衡可以添加ip_hash这个配置:用haproxy做的负载均衡可以用balance source这个配置,从而使用一个IP的请求发到同一个服务器: 2.利用数据库同步session: 3.利用cookie同步session数据,

  • nginx 负载均衡 多站点共享Session

    多站点共享Session常见的作法有: •使用.net自动的状态服务(Asp.net State Service); •使用.net的Session数据库: •使用Memcached. •使用Cookie方式实现多个站点间的共享(这种方式只限于几个站点都在同一域名的情况下): 这里我们就 演练一下 以数据库的形来存储Session,来实现多站点共享Session. 首先我们 建好一下站点,如下图: Default.aspx 其中 有二个Button  ,SetSession 主要是用于给一个 S

  • nginx+redis实现session共享

    上一篇我们介绍了nginx实现的负载均衡和动静分离,可看这边. 我们在文章的末尾说到,负载均衡需要面临的一个问题是内存数据的同步.例如:我有A,B两台服务器做了负载均衡,当我在A服务器上执行了登录并且将登录数据存入session的时候,这些session数据只存在于A服务器上,而没有在B服务器上,假如在处理下一个请求的时候,我需要用到session的数据,而不巧的是,这个请求刚好被交由B服务器来处理,这时候就会出现B服务器拿不到session数据的情况,从而造成错误. 这是一个无法避免的问题,有

  • Springsession nginx反向代理集成过程

    一概述 springsession 配置,如果是sevlet的web应用后会自动集成 jdbc ,redis,Hazelcast,MongoDB 二session概述 2.1 分布式项目的session问题 在分布式项目中如果客户端给服务端发送了一个请求,在nginx做反向代理的情况下,第一个请求可能到达tomcat1,此时tomcat1就会创建一个session然后将响应给客户端:同理客户端再次发送一个请求,然后nginx又做了一次反向代理,此时的请求可能到达tomcat2,此时tomcat2

  • 详解Nginx反向代理实现会话(session)保持的两种方式

    一.ip_hash: ip_hash使用源地址哈希算法,将同一客户端的请求总是发往同一个后端服务器,除非该服务器不可用. ip_hash语法: upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; server backend3.example.com down; server backend4.example.com; } ip_hash简单易用,但有如下问题: 当后端服务器宕

  • Nginx session丢失问题处理解决方法

    在用nginx的反向代理tomcat的路径中,可能会出现session丢失问题.每发送一次请求 JESSIONID  都会发生改变,说明上一次形成的session丢失,从而创建新的session. 第一种情况: server{ listen 80; server_name www.jiahemdata.com www.jiahemdata.cn; charset utf-8; location /{ proxy_redirect off; proxy_pass http://127.0.0.1:

  • PHP编程中的Session阻塞问题与解决方法分析

    本文实例讲述了PHP编程中的Session阻塞问题与解决方法.分享给大家供大家参考,具体如下: 使用session过程中,在开启session后,同一浏览器,执行同一程序,不同页面会被锁.不同浏览器不会出现这种情况. 疑问:是不是session_start导致了阻塞? 于是,我写了几个页面测试了一下,发现是session导致了阻塞,而其他两种情况不会造成阻塞. 查了下PHP的Bug列表,发现有人提出了这个问题: Description: ------------ Calling session_

  • Ajax跨域访问Cookie丢失问题的解决方法

    ajax跨域访问,可以使用jsonp方法或设置Access-Control-Allow-Origin实现,关于设置Access-Control-Allow-Origin实现跨域访问可以参考之前我写的文章<ajax 设置Access-Control-Allow-Origin实现跨域访问> 1.ajax跨域访问,cookie丢失 首先创建两个测试域名 a.fdipzone.com 作为客户端域名 b.fdipzone.com 作为服务端域名 测试代码 setcookie.PHP 用于设置服务端co

  • php提示Failed to write session data错误的解决方法

    本文较为详细的分析了php提示Failed to write session data错误的解决方法.分享给大家供大家参考.具体方法如下: 一.问题: 提示信息:Warning: Failed to write session data (files).Please verify that the current setting of session.save_path is correct () in Unknown on line 0 二.解决方法: 代码如下: 复制代码 代码如下: ses

  • javascript小数精度丢失的完美解决方法

    原因:js按照2进制来处理小数的加减乘除,在arg1的基础上 将arg2的精度进行扩展或逆扩展匹配,所以会出现如下情况. javascript(js)的小数点加减乘除问题,是一个js的bug如0.3*1 = 0.2999999999等,下面列出可以完美求出相应精度的四种js算法 function accDiv(arg1,arg2){ var t1=0,t2=0,r1,r2; try{t1=arg1.toString().split(".")[1].length}catch(e){} t

  • Nginx启动常见错误及解决方法

    重新启动服务器,访问web服务发现无法浏览啦!登陆服务器之后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)错误,进到logs文件发现的确没有nginx.pid文件 [root@localhost sbin]# ./nginx -s reload nginx: [error]

  • gson ajax 数字精度丢失问题的解决方法

    ajax传输的json,gson会发生丢失,long > 15的时候会丢失0 解决方案:直接把属性为long的属性自动加上双引号成为js的字符串,这样就不会发生丢失了,ajax自动识别为字符串. 用法: ajaxResult("",0,new Object()); //随便一个对象就可以,List 之类的 /** * 以Ajax方式输出常规操作结果 * * @param status * 返回状态,200表示成功, 500表示错误 * @param message * 操作结果描

  • RocketMQ消息丢失场景以及解决方法

    既然使用在项目中使用了MQ,那么就不可避免的需要考虑消息丢失问题.在一些涉及到了金钱交易的场景下,消息丢失还是很致命的.那么在RocketMQ中存在哪几种消息丢失的场景呢? 先来一张最简单的消费流程图: 上图中大致包含了这么几种场景: 生产者产生消息发送给RocketMQRocketMQ接收到了消息之后,必然需要存到磁盘中,否则断电或宕机之后会造成数据的丢失消费者从RocketMQ中获取消息消费,消费成功之后,整个流程结束 这三种场景都可能会产生消息的丢失,如下图所示: 场景1中生产者将消息发送

  • C# SESSION丢失问题的解决办法

    我们在用C#开发程序的时候经常会遇到Session很不稳定,老是数据丢失.下面就是Session数据丢失的解决办法希望对您有好处. 1.在WEB.CONFIG文件中修改SESSION状态保存模式,如:<sessionState mode='StateServer' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cook

  • Nginx 502 bad gateway和Nginx 504 Gateway Time-out错误解决方法 错误解决办法

    最近服务器宕机的现象比较频繁,临下班时分,G给挂掉了,502 Bad Gateway Nginx,不由得让我想起之前的504 Gateway Time-out,两者应该有点联系,一定得弄清楚.Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI. 解决这两个问题其实是需要综合思考的,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关,而Nginx 504 Gateway Time-o

随机推荐