springboot+redis+nginx 解决session共享
Nginx负载均衡解决方案:https://blog.csdn.net/my13413527259/article/details/85234186
-----------------------正事专用分割线-----------------------
pom.xml
引入组件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
application.yml
配置连接redis
server:
port: 8102
spring:
redis:
password: 123456
cluster:
nodes:
- 127.0.0.1:7001
- 127.0.0.1:7002
- 127.0.0.1:7003
- 127.0.0.1:7004
- 127.0.0.1:7005
- 127.0.0.1:7006
session:
timeout: 300
SessionConfig.java
开启redis管理session
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
@Configuration
@EnableRedisHttpSession
public class SessionConfig {
}
TestControl.java
模拟登陆,设置到session
@Controller
public class TestControl {
@GetMapping("/index")
public String index() {
return "main";
}
@GetMapping("/login/{name}")
public String login(@PathVariable("name")String name,HttpServletRequest request) {
System.out.println("002----name----"+name);
request.getSession().setAttribute("name", name);
return "redirect:/index";
}
}
main.html
展示登陆信息,session中的数据
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
8102----nginx002
<h2>name:<span th:text="${session.name}">name</span></h2>
</body>
</html>
分开部署两份。修改一下页面区分哪个服务器
测试
请求:http://192.0.0.234/login/333 ,模拟登陆一次
跳到主页 http://192.0.0.234/index ,刷新几次,模拟负载到不同的服务器上
如果取到登陆信息,说明session共享成功;
redis中会有session的信息