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

假设你已经掌握了nginx和redis的安装和简单配置。笔者是mac环境,用homebrew安装nginx和redis不要太容易。

所有源码公开 点击去下载

说明

  1. 在application.properties 添加redis相关配置
    #spring.redis.database
    spring.redis.hostname=127.0.0.1
    spring.redis.port=6379  
    spring.redis.password=admin
    spring.redis.pool.maxActive=8  
    spring.redis.pool.maxWait=-1  
    spring.redis.pool.maxIdle=8  
    spring.redis.pool.minIdle=0  
    spring.redis.timeout=0
  1. 在application.properties配置文件中修改两个不同端口并用 mvn package spring-boot:repackage 命令生成两个jar文件.然后java -jar 命令分别运行Demo

  2. 假设我们这里分配的端口是9001和9002,然后在nginx.conf配置反向代理
    Mac下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;
        }
    }
}
  1. 效果预览
    一个简单的系统,首次访问系统需要登录。登录成功后页面跳转到首页。部署了两套系统,端口分别为9001和9002。
  • 访问localhost:80,可以看到分配到了9001端口

首次访问系统需要登录。


nginx+springboot+redis 负载均衡Session共享的实现_第1张图片
访问localhost:80
  • 登录进去后重定向到9002端口

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

nginx+springboot+redis 负载均衡Session共享的实现_第2张图片
登录进去后重定向到9002端口
  • 刷新页面端口变成9001

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

nginx+springboot+redis 负载均衡Session共享的实现_第3张图片
刷新页面发现端口是9001

多次刷新可以看得出Session已实现共享。至此简单的使用已经完成,下一节开始深入源码研究Spring如何实现spring-session。

所有源码公开 点击去下载

你可能感兴趣的:(nginx+springboot+redis 负载均衡Session共享的实现)