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已实现共享。
领取专属 10元无门槛券
私享最新 技术干货