下载解压安装nginx
链接: http://nginx.org/en/download.html.
Linuk版本: nginx-1.18.0 pgp
Windows版本:nginx/Windows-1.18.0 pgp
我这里下载的是Windows版本,解压完成
可以点击nginx.exe 启动,一闪而过则启动成功
也可以使用命令 Windows版本cmd命令启动加上 start nginx.exe
浏览器下访问 http://localhost/
8080 8081 两个tomcat集群简单配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量。
gzip on;
#为指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容。
gzip_disable "msie6";
#upstream模块主要负责负载均衡的配置,通过默认的轮询调度方式来分发请求到后端服务器
upstream tomcatserver1 {
server localhost:8080;
server localhost:8081;
}
server {
listen 80;
server_name 127.0.0.1;
#用于设置www/路径中配置的网页的默认编码格式
charset utf-8;
location ~ \.(html|js|css|png|gif|img)$ {
root D:\img;
}
#反向代理代理服务器访问模式,通过proxy_set配置让客户端访问透明化
location / {
proxy_pass http://tomcatserver1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
先运行一个8080tomcat项目
@RestController
public class FactoryController {
@Value("${server.port}")
private String port;
@Autowired
private HttpServletRequest request;
@GetMapping("/session")
@ApiOperation(value = "简单工厂演示" ,httpMethod = "GET")
public String session(){
return "端口号:"+ port+ ",sessionId:"+ request.getSession().getId();
}
}
访问http://127.0.0.1/session
不管访问几次 sessionId 都没变化
再运行一个8081tomcat项目
sessionId 开始出现不一致问题
用spring-session-data-redis 来解决session共享
springboot整合redis 请看我上几篇文章,这里就不说了
链接: https://blog.csdn.net/qq_41604890/article/details/113407502.
导入依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
配置类
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
/**
* 分布式session-redis配置
*/
// session托管到redis
// maxInactiveIntervalInSeconds单位:秒;
// RedisFlushMode有两个参数:ON_SAVE(表示在response commit前刷新缓存),IMMEDIATE(表示只要有更新,就刷新缓存)
@EnableRedisHttpSession(redisNamespace = "session")
@Configuration
public class RedisHttpSessionConfig {
}
再次启动两个tomcat测试,session一致
可以自定义sessioId策略
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.session.web.http.HeaderHttpSessionIdResolver;
/**
* 分布式session-redis配置
*/
// session托管到redis
// maxInactiveIntervalInSeconds单位:秒;
// RedisFlushMode有两个参数:ON_SAVE(表示在response commit前刷新缓存),IMMEDIATE(表示只要有更新,就刷新缓存)
@EnableRedisHttpSession(redisNamespace = "session")
@Configuration
public class RedisHttpSessionConfig {
//可自定义session策略,这里配置的是Header方式(有提供Header,Cookie等方式)
@Bean
public HeaderHttpSessionIdResolver httpSessionStrategy() {
// 设置HttpServletRequest中Header里的自定义token名称
return new HeaderHttpSessionIdResolver("token");
}
}
这样设置Header策略后,需将第一次访问返回的token 在每次请求HttpServletRequest中Header中带上访问,不然sessionId将变化。
去看看存在redis中的session
链接: spring-session管理session实战.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/133953.html