Nginx —— 分布式session 之粘性Session实例

        用 Nginx 反向代理多台服务器的时候,会出现 session 不同步的问题,如用户在tomcat1中登录,保存了用户信息进 session 中,但是tomcat2中的 session 中没有该用户信息,如果用户再次发出请求时分配到了 tomcat2 中,就会出现 找不到用户 session信息,重新调整到登录页面的情况,所以,采用粘性session的方式,同一个IP的所有访问请求都指定到同一个 tomcat中,这样就解决了问题。因为一个用户的请求都会发送到同一台服务器

步骤:

        tomcat部分:

        部署两台(或者多台)tomcat,如果是同一台电脑的话可以参考我的另一篇博客:https://blog.csdn.net/DGH2430284817/article/details/90417905

        web项目部分:

        把项目的war包放到每一个 tomcat 的 webapps 目录下,这样在 tomcat 启动的时候,会自动解压部署web项目

        nginx部分:

        修改conf目录下的 nginx.conf 文件:

	upstream tomcatServer{ 
		#同一个ip访问同一个服务器
		ip_hash;
		server 127.0.0.1:8080;
		server 127.0.0.1:8082;
	}
 
    server {
        listen       80;
        server_name  localhost;
 
        location / {
			proxy_pass  http://tomcatServer/;
        }
 
       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
 
    }

最重要的就是 ip_hash 这个配置,这是nginx自带的,可以实现同一个ip分配到同一个代理服务器

 

最后启动nginx和tomcat就可以了,session的问题就解决了

 

注意:

        在分布式 session 的三种解决方法中,以上这种是最简单的,而且资源消耗也是最小的,但是缺点就是其中一台tomcat 崩溃后,里面的 session 数据就全没了,单点故障危险大。
 

你可能感兴趣的:(Nginx)