spring+redis+nginx实现session共享

createh52周前 (06-09)技术教程11

上一节,我们讲到使用tomcat+nginx+redis实现session的共享,如果对上一节不是很了解,欢迎订阅我的头条号:一点热,然后阅读之前的文章。

上一章节的项目已经放到github里面。
https://github.com/yeehot/tomcat_redis_nginx_session

tomcat+redis+nginx的session共享

上一节我们使用tomcat+redis+nginx来实现session共享,但是,大家可能会注意到,需要我们在tomcat客户端配置相应的Redis项,而且还需要把相应的包放到tomcat里面,那么这个很大程度上限制了服务器只能使用tomcat来实现session共享,那么为了解决服务器只能使用tomcat的问题,我这里使用spring session+redis 来解决问题。

试验环境:

Ubuntu系统

Nginx:实现负载均衡

tomcat:后端服务器

redis:session同步

springmvc:java项目,Yeehot-Program-King

VM:两台虚拟机:VM1:192.168.3.4,VM2:192.168.3.5

Nginx部署在192.168.3.5

spring mvc项目需要用到的包:

spring-session,spring-data-redis和jedis

1、创建spring MVC的maven项目,配置好相应的启动项,关于有人不知道怎么使用maven,这个其实如果不会,可以使用gradle或者直接下载相应的包也行的,不一定用maven。

在maven的pom.xml里面添加三个库spring-session,spring-data-redis和jedis

<dependency>

<groupId>org.springframework.session</groupId>

<artifactId>spring-session</artifactId>

<version>1.2.0.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework.data</groupId>

<artifactId>spring-data-redis</artifactId>

<version>1.4.1.RELEASE</version>

</dependency>

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.5.2</version>

</dependency>

2、在applicationContext.xml添加redis客户端连接配置信息。由于我的配置里面使用无密码的,所以直接就IP和端口了。

<context:annotation-config/>

<beanclass="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>

<beanclass="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">

<!-- redis 服务器的地址与端口的配置 -->

<propertyname="hostName"value="192.168.3.5"/>

<propertyname="port"value="6379"/>

</bean>

3、在web.xml添加过滤规则
springSessionRepositoryFilter

<filter>

<filter-name>springSessionRepositoryFilter</filter-name>

<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

</filter>

<filter-mapping>

<filter-name>springSessionRepositoryFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

4、编写controller

这里主要就是打印本机的IP和session ID,查看不同的服务器的sessionID是否发生变化

package com.yeehot.controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

@Controller

public class InfoController {

@RequestMapping(value = "/yeehotsession",produces ="application/json; charset=utf-8")

@ResponseBody

public String inputsession( String username,HttpServletRequest request){

HttpSession session=request.getSession();

String localip= request.getLocalAddr();

String resutl="本机IP:"+localip+" 当前session id"+session.getId();

return resutl;

}

}

5、Nginx负载均衡的配置

这里可以移步到之前写的负载均衡的文章

6、redis的安装与启动

可以看我的上一节的文章,头条号:一点热

6、测试结果

我这里nginx安装在VM2:192.168.3.5,然后输入
http://192.168.3.5/Yeehot-Program-King/yeehotsession,可以看到两台机器的IP和session ID

由上图看到,不同的IP返回的sessionId都是一样的说明redis起到保存session的作用了。实现了session的共享。

今天的课程讲到这里,欢迎继续关注我的头条号:一点热,转载到其它网站请与我联系。欢迎收藏与转发。

下一节更加精彩。

相关文章

如何理解Nginx和Tomcat?

Nginx和Tomcat是两种常用的Web服务器,它们都可以用来提供Web服务,但在一些方面有所不同。Nginx是一个高性能的反向代理服务器和Web服务器,它主要用来处理静态资源的请求,比如图片、样式...

Vue脚手架安装,初始化项目,打包并用Tomcat和Nginx部署

1.创建Vue脚手架# 1.在本地文件目录创建my-first-vue文件夹,安装vue-cli脚手架: npm install -g vue-cli 安装过程如下图所示:创建my-first-vue...

【Nginx】Nginx 4种常见配置实例

本文主要介绍nginx 4种常见的配置实例。Nginx实现反向代理;Nginx实现负载均衡;Nginx实现动静分离;Nginx实现高可用集群;Nginx 4种常见配置实例如下:一、Nginx反向代理配...

前端_react项目从windows部署到centos

前言:从工程角度来讲,本地开发完就要把项目部署到生产环境,此过程的快慢也直接影响着整体的效率。所以也有很多人做持续集成的工作,例如:CI/CD/一键部署。但对于个人开发者而言,如果能有工具支撑是最好的...

Linux环境通过Dockerfile创建Tomcat镜像

简介: Docker通过读取Dockerfile里面的内容可以自动创建镜像(image),Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系。Docker程序将读...

tomcat+Nginx负载均衡对session处理2

上一节,我们把session的原理分析了一下,对缓存机制做了一个解释,引入我们的缓存机制memcached,同时也提到了一套开源的memcached管理方案Memcached Session Mana...