一篇文章带你搞定 SpringBoot 中 使用 nginx 实现 session 共享

学习过:Nginx 学习

学习过:一篇文章带你搞定 SpringBoot 中使用 redis 实现 session 共享

本篇文章主要是在此基础上,利用 nginx 实现自动配置

文章目录

    • 一、环境搭建
      • 1. docker 搭建 redis 容器
      • 2. docker 搭建 jdk 容器
      • 3. docker 搭建 nginx 容器
    • 二、引入 Nginx 实现 session 共享
    • 三、总结

一、环境搭建

1. docker 搭建 redis 容器

就创建一个容器的情况下,一般有默认端口和主机对应,所以不用设置也行,但是如果有多个端口需要用时,需要指定对应的端口和主机进行映射

redis容器搭建参考:一篇文章带你搞定 SpringBoot 整合 Redis

2. docker 搭建 jdk 容器

docker 创建 jdk 容器:docker run -di --name=yolo_jdk -p 8080:8080 -p 8081:8081 jdk1.8

注意指定端口映射,docker 创建的容器一定要注意和 主机的端口映射

通过 Xftp将项目jar 包发送到主机中,然后利用 cp 命令将jar 包发送到容器中:

在这里插入图片描述
然后进入容器启动该项目:docker exec -it yolo_jdk /bin/bash
(1)nohup java -jar session-0.0.1-SNAPSHOT.jar --server.port=8080 >8080.log &

nohub:表示当终端关闭时,SpringBoot不要停止运行,
>8080:表示把日志打印到 8080.log 文件里(因为我们需要看springsecurity 的密码)
  &:  表示让Springboot 在后台运行

(2)nohup java -jar session-0.0.1-SNAPSHOT.jar --server.port=8081 >8081.log &
一篇文章带你搞定 SpringBoot 中 使用 nginx 实现 session 共享_第1张图片
(3)测试登录:注意这里需要去 8080.log 文件中找生产的 springsecurity 的密码才能登录

在这里插入图片描述

3. docker 搭建 nginx 容器

这里也就一个容器,所以使用默认端口 6379就可以

nginx 容器搭建:Docker 的应用部署 Nginx

确保docker 创建的 nginx 能够访问:docker run -di --name=yolo_nginx -p 80:80 nginx

在这里插入图片描述
一篇文章带你搞定 SpringBoot 中 使用 nginx 实现 session 共享_第2张图片

二、引入 Nginx 实现 session 共享

这里需要注意,docker容器配置的 nginx,不能直接修改 /etc/nginx/nginx.conf,不然会出错,应该修改/etc/nginx/conf.d/fault.conf

将其内容换为:

upstream yolo-nginx{
    server 192.168.245.131:8080 weight=1;
    server 192.168.245.131:8081 weight=1;
}
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        proxy_pass http://yolo-nginx;
        proxy_redirect default;
        #root   /usr/share/nginx/html;
        #index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

(1) upstream :表示配置上游服务器
(2) yolo-nginx :表示服务器集群的名字,这个可以随意取名字
(3) upstream :里边配置的是一个个的单独服务
(4) weight :表示服务的权重,意味者将有多少比例的请求从 Nginx 上转发到该服务上
(5) location :中的 proxy_pass 表示请求转发的地址,/ 表示拦截到所有的请求,转发转发到刚刚配置好的服务集群中
(6) proxy_redirect :表示设置当发生重定向请求时,nginx 自动修正响应头数据(默认是 Tomcat 返回重定向,此时重定向的地址是 Tomcat 的地址,我们需要将之修改使之成为 Nginx 的地址)。

这里为了快速实现,可以 通过文件复制到容器中(当然也可以使用目录挂载),避免直接编辑 vim 麻烦:

在这里插入图片描述
如果要使用 vim 直接才容器里编辑的话,还要安装 vim :一篇文章带你搞定如何在 Docker 创建的容器中修改配置文件

修改成功后重启 nginx:

一篇文章带你搞定 SpringBoot 中 使用 nginx 实现 session 共享_第3张图片
访问测试:比重设置的1:1,所以出现的概率是相同的。

一篇文章带你搞定 SpringBoot 中 使用 nginx 实现 session 共享_第4张图片
一篇文章带你搞定 SpringBoot 中 使用 nginx 实现 session 共享_第5张图片

三、总结

docker 创建容器,注意端口映射

docker 创建的 nginx 容器,注意配置文件的位置:/etc/nginx/conf.d/default.conf
根据添加的内容对其进行修改即可。

你可能感兴趣的:(SpringBoot,学习笔记)