做网站自动上传文章,谷歌做网站,北京建站公司兴田德润很好,医院网站怎么做运营一、前言 为什么会出现session共享问题#xff1f; 客户端与服务器交互时会产生唯一的sessionid用于标记用户#xff0c;但是在分布式架构中#xff0c;如果还是采用 session 的方式#xff0c;用户发起请求#xff0c;通过 nginx 做请求转发时#xff0c;并不知道是转发… 一、前言 为什么会出现session共享问题 客户端与服务器交互时会产生唯一的sessionid用于标记用户但是在分布式架构中如果还是采用 session 的方式用户发起请求通过 nginx 做请求转发时并不知道是转发到服务器1还是服务器2所以就会出现session共享问题。 关于分布式 session 共享有两种解决方式使用 spring-session 框架或者是使用 token 替代 session。 今天主要记录使用 spring-session 框架解决 session 共享问题。 其主要原理就是使用 redis 记录 session 实现session 共享。 二、代码部分 1、引入依赖 !--spring session 与redis应用基本环境配置,需要开启redis后才可以使用不然启动Spring boot会报错 --dependency groupIdorg.springframework.session/groupId artifactIdspring-session-data-redis/artifactId/dependencydependency groupIdorg.apache.commons/groupId artifactIdcommons-pool2/artifactId/dependencydependency groupIdredis.clients/groupId artifactIdjedis/artifactId/dependency 2、application配置文件 redis: hostname: 192.168.10.180 port: 6379 password: 123456 3、SessionConfig /** * 这个类用配置redis服务器的连接 * maxInactiveIntervalInSeconds为SpringSession的过期时间单位秒 */EnableRedisHttpSession(maxInactiveIntervalInSeconds 1800)public class SessionConfig { /* 冒号后的值为没有配置文件时制动装载的默认值 */ Value(${redis.hostname:localhost}) String hostName; Value(${redis.port:6379}) int port; Value(${redis.password:123456}) String passWord; Bean public JedisConnectionFactory connectionFactory() { JedisConnectionFactory connection new JedisConnectionFactory(); connection.setPort(port); connection.setHostName(hostName); connection.setPassword(passWord); return connection; }} 4、nginx配置 #user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream backServer{ server 192.168.10.180:8080; server 192.168.10.180:8081; } server { listen 80; server_name shop.sscai.club; location / { proxy_pass http://backServer; index index.html index.htm; } }} 我创建了一个java相关的公众号用来记录自己的学习之路感兴趣的小伙伴可以关注一下微信公众号哈niceyoo