nginx+springboot+redis 负载均衡,实现Session共享

nginx和redis的安装以及基础配置文章不再给出,文章源码构建使用Maven。如果有需要可以写评论,我会单独写一篇文章来介绍。

1. 在Springboot的application.properties 添加redis相关配置

2. 让Redis来管理Session

给SpringBoot增加如下配置,主要是@EnableRedisHttpSession这个注解,表示让Redis来管理Session

@Configuration

@EnableCaching

@EnableRedisHttpSession

public class RedisConfig{

}

3. 在application.properties配置文件中添加下图所示口9001,然后执行maven命令:

mvn package spring-boot:repackage

生成jar文件。然后java -jar 命令运行jar文件

这一步操作完成后浏览器输入localhost:9001 应该可以访问系统了。然后修改端口为9002,继续上一步的操作,生成jar包并运行。现在我们有两个一样的项目分别跑在9001和9002端口了。

4. 配置ngxin监听80端口,在nginx.conf配置反向代理映射9001和9002端口。

nginx配置如下

http {

...

upstream dis{

server 127.0.0.1:9001 weight=1; //weight表示请求分配的权重

server 127.0.0.1:9002 weight=1;

}

server {

listen 80;

server_name localhost;

location / {

proxy_pass http://dis;

}

}

}

5. 效果预览

部署了两套系统,访问端口分别是9001和9002。而这一切对于客户端是不透明的,客户端只是通过80端口访问服务器。

访问localhost:80,可以看到分配到了9001端口

首次访问,端口显示是900

登录成功后,重定向请求,nginx分配请求到9002端口,此时9002是第一次访问,但是从截图看得出来Session 已经存在了,没有再次提示登录。负载均衡成功

登录进去后重定向到9002端口

可以多刷新几次,结果是9001和9002端口反复切换访问。

刷新页面发现端口是9001

多次刷新可以看得出Session已实现共享。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180327A1V9AD00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券