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系列教程(1)nginx基本介绍和安装入门

Nginx系列教程(2)nginx搭建静态资源web服务器

Nginx系列教程(3)nginx缓存服务器上的静态文件

Nginx系列教程(4)nginx处理web应用负载均衡问题以保证高并发

Nginx系列教程(5)如何保障nginx的高可用性(keepalived)

Nginx系列教程(6)nginx location 匹配规则详细解说

Nginx系列教程(7)nginx rewrite配置规则详细说明

Nginx系列教程(8)nginx配置安全证书SSL

Nginx系列教程(9)nginx 解决session一致性

相关文章
|
2月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
2月前
|
tengine 应用服务中间件 Linux
Tengine、Nginx安装PHP命令教程
要在阿里云Linux上安装PHP,请先更新YUM源并启用PHP 8.0仓库,然后安装PHP及相关扩展。通过`php -v`命令验证安装成功后,需修改Nginx配置文件以支持PHP,并重启服务。最后,创建`phpinfo.php`文件测试安装是否成功。对于CentOS系统,还需安装EPEL源和Remi仓库,其余步骤类似。完成上述操作后,可通过浏览器访问`http://IP地址/phpinfo.php`测试安装结果。
|
2月前
|
应用服务中间件 Linux nginx
Mac os 安装 nginx 教程(success)
这篇文章是关于如何在Mac OS系统上使用Homebrew安装nginx及其依赖,并解决安装过程中可能出现的权限问题。
182 0
Mac os 安装 nginx 教程(success)
|
5月前
|
JavaScript 应用服务中间件 nginx
【项目部署系列教程】5. nginx配置反向代理,解决跨域接口的访问
【项目部署系列教程】5. nginx配置反向代理,解决跨域接口的访问
255 10
|
5月前
|
应用服务中间件 Linux 网络安全
nginx安装的详细教程(包括命令行安装和编译安装)
nginx安装的详细教程(包括命令行安装和编译安装)
|
5月前
|
应用服务中间件 Linux nginx
【项目部署系列教程】3. 安装宝塔 vs nginx
【项目部署系列教程】3. 安装宝塔 vs nginx
85 0
|
6月前
|
应用服务中间件 Linux 程序员
老程序员分享:nginx安装及其配置详细教程
老程序员分享:nginx安装及其配置详细教程
|
6月前
|
负载均衡 前端开发 应用服务中间件
技术好文共享:超详细的Nginx简易教程
技术好文共享:超详细的Nginx简易教程
|
6月前
|
JavaScript Ubuntu 应用服务中间件
nginx扩展 OpenResty 实现防cc攻击教程
使用OpenResty实现CC攻击防护,包括两个主要步骤:限制请求速度和JS验证。首先,安装依赖(RHEL/CentOS需安装readline-devel, pcre-devel, openssl-devel,Ubuntu需安装libreadline-dev等)。然后,安装Luajit和OpenResty。在Nginx配置中,创建`lua`共享字典并设置`content_by_lua_file`调用lua脚本。lua脚本检查请求频率,超过限制则返回503,否则增加计数。同时,通过JS验证,生成随机码并重定向用户,用户需携带正确验证码请求才能访问。
156 0
|
7月前
|
缓存 安全 应用服务中间件
蓝易云 - Nginx的HTTPS部署与安全性能优化教程
以上就是在Nginx上部署HTTPS并进行安全性能优化的基本步骤。需要注意的是,这些步骤可能会根据您的具体需求和环境有所不同。
60 0