四、采用docker安装部署Nginx

在主机192.168.1.138下,安装nginx,docker 的安装命令如下:

docker  run \
-d \
-p 8080:80 \
--name session-nginx \
nginx
  • -d:在后台运行

  • -p:容器的80端口映射到物理机的8080端口

  • –name:容器的名字为session-nginx

  • 关于为什么要用docker安装?

    因为用docker安装非常方便,docker安装1分钟不到就安装完,如果用传统安装,会各自安装包和命令,
    最起码需要10分钟才能安装完。所以建议大家用docker安装。

  • 不懂docker怎么办?

    关于不懂docker的同学,我已经准备了一份免费的docker教程,非常简单,大家去学一下就好。
    https://study.163.com/course/courseMain.htm?share=2&shareId=1016671292&courseId=1209512823

体验:http://192.168.1.138:8080/

五、采用docker部署Nginx的集群负载均衡

步骤1:在物理机建3个文件夹目录

  • /data/volume/nginx/www 存放nginx的静态文件
  • /data/volume/nginx/config 存放nginx的配置文件
  • /data/volume/nginx/logs 存放nginx的日志

步骤2:把nginx容器的配置文件拷贝出来

命令如下:

docker cp session-nginx:/etc/nginx/nginx.conf /data/volume/nginx/config/
docker cp session-nginx:/etc/nginx/conf.d/default.conf /data/volume/nginx/config/

步骤3:修改nginx的集群负载均衡配置文件

为达到负载均衡目的,需要修改主机配置文件/data/volume/nginx/config/default.conf

  • server外部追加,
upstream web {server 192.168.1.8:9090;server 192.168.1.8:9091;
}

192.168.1.8代表Springboot用户登录服务部署主机

  • server里边增加
location = / {proxy_pass http://web;
}

修改后 完整的default.conf源码,如下:

upstream web {server 192.168.1.8:9090;server 192.168.1.8:9091;
}server {listen       80;server_name  localhost;#charset koi8-r;#access_log  /var/log/nginx/host.access.log  main;location / {root   /usr/share/nginx/html;index  index.html index.htm;proxy_pass http://web;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}
}

步骤4:启动nginx

  • 删除原先安装的nginx容器,不然会报错
    docker rm -f session-nginx

  • 启动nginx容器

docker  run \
-d \
-p 8080:80 \
--name session-nginx \
-v /data/volume/nginx/www:/usr/share/nginx/html \
-v /data/volume/nginx/config/default.conf:/etc/nginx/conf.d/default.conf \
-v /data/volume/nginx/config/nginx.conf:/etc/nginx/nginx.conf \
-v /data/volume/nginx/logs:/var/log/nginx \
nginx

-v的意思就是把目标目录,映射到容器文件目录,例如:把容器的/var/log/nginx目录映射到主机的/data/volume/nginx/logs目录

剖析SpringBoot+Nginx的分布式Session不一致性

步骤1:启动SpringBoot用户登录服务

把Springboot用户登录服务,启动2个服务,端口分别为9090和 9091

步骤2:用IE体验效果

http://192.168.1.138:8080/user/login?username=agan1&password=agan1
http://192.168.1.138:8080/user/find/agan1

结论:

  1. 用户第一次访问Nginx,请求落到了服务器A,服务器A生成了一个sessionId,并保存在用户的cookie中。
  2. 用户第二次再来访问Nginx,它这次把cookie里面的sessionId加入http的请求头中,这时请求落到了服务器B,服务器B发现没有找到sessionId,于是创建了一个新的sessionId并保存在用户的cookie中。
    以上2个步骤,在分布式系统中,必将导致session错乱。

采用docker安装部署Nginx相关推荐

  1. 在Docker上部署NGINX和NGINX Plus

    在Docker上部署NGINX和NGINX Plus 高性能应用程序交付平台NGINX Plus,负载均衡器和Web服务器可通过Docker容器部署. 先决条件 在Docker容器中运行NGINX开源 ...

  2. 使用Docker安装的Nginx代理前端vue项目

    本篇文章主要是记录 一次使用 docker成功部署nginx之后,代理(部署)静态资源或前端vue项目,遇到的2个问题(docker安装nginx参考) 1.前置条件,防火墙关闭,开放80端口,doc ...

  3. Docker安装的Nginx无法访问静态资源|nginx 容器静态资源无法访问

    最近在docker部署Thinkphp管理后台,部署完成后发现根目录下所有静态资源无法访问.翻了很多php 配置和nginx 配置,后来发现是因为使用Docker 容器问题. 问题描述 Docker启 ...

  4. 【Docker安装部署FastDFS详细过程】

    0.国人之光~FastDFS 分布式文件存储的由来: 在我们的项目中有很多需要存储的内容出现,比如图片,视频,文件等等,在早期的时候用户量不大,产生的文件也不是很多,这时我们可以把文件和服务程序放在一 ...

  5. Docker安装部署RabbitMQ

    https://blog.csdn.net/super_rd/article/details/70792746  http://muxiulin.cn/archives/category/rabbit ...

  6. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需 ...

  7. Docker实战:Docker安装部署RabbitMQ

    使用Docker安装部署RabbitMQ 1.docker search rabbitmq:management 2.docker pull rabbitmq:management 注意:如果dock ...

  8. saiku docker配置部署_【安装教程】01 Gitea Docker 安装部署 - 【SkywenCode】技术团队基...

    在2016年-2019年,SkywenCode技术团队使用码云Gitee 作为线上代码库管理,基于敏捷开发和持续构建的思路,我们整体基础建设以Drone / Jenkins + Docker 的方式构 ...

  9. 服务器上使用docker安装部署禅道zentao

    服务器上使用docker安装部署禅道zentao 目的:在服务器上安装docker禅道容器 一.查看服务器是否有禅道容器 docker ps -a 可以查看到所有容器. 二.从docker库下载禅道镜 ...

最新文章

  1. 迭代器和生成器的区别
  2. python使用ffmpeg截取视频段
  3. mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
  4. 洛谷P1937 [USACO10MAR]仓配置Barn Allocation
  5. 用脚本判断用户传参的参数是否有对应的进程在运行并把结果显示给用户
  6. SQL优化笔记(二)—CPU优化
  7. 7——1 shelve 模块
  8. inDesign教程,如何在文档中添加交互性预览?
  9. PyQt5-Label背景颜色和文本颜色的设置
  10. html重复渐变包括,html – CSS:当设置为tbody / thead时,在Chrome中重复的渐变
  11. 【Day1.4】奢华的海滨酒店,打发半天时间不成问题
  12. python 数据分析 电信_基于Python的电信客户流失分析和预测
  13. 更新:扫码即可实现丨用脚本快速查看自己被多少微信好友删除
  14. highCharts第一天学习笔记(面积图)
  15. matlab里面axis auto,Matlab中axis函数用法总结-Go语言中文社区
  16. 工业通讯 | STM32F4xx应用控制器与SoM集成 Ⅱ
  17. 谈谈coding面试的种类与基本应对策---一亩三分地帖子
  18. java设备imei号_Android 获取imei号码,获取手机型号和系统版本号
  19. 车站广播系统采用计算机,广播系统在轨道交通中的应用
  20. Proxyfire烈火代理软件与论坛

热门文章

  1. 10月份出版图书《玩转虚拟机基于VMware+Windows》
  2. 为什么我会反对大家写工作日报
  3. ASP.NET中定制自己的委托和事件参数类
  4. MSN无法登陆的八种情况
  5. Golang map 三板斧第二式:注意事项
  6. java.net.UnknownHostException 未知的名称或服务
  7. spring cloud Eureka server 问题 Spring Cloud java.lang.TypeNotPresentException
  8. 什么是Java线程池
  9. liunx screen使用简单实验
  10. Java基础 -- 冒泡排序算法(带详细注释)