业务需求
- 通过Nginx实现蓝绿发布,24小时不停机
- 修改config文件后执行
nginx -s reload
命令,该命令的作用:nginx 不停止服务在处理新的请求的时候会平滑的将就得nginx.conf配置文件更新为新的配置文件。
前期准备
- 确定nginx版本: 1.14.0
- nginx热启动命令
docker exec -it nginx:1.14.0 nginx -s reload
- 统一宿主机挂载路径:usr/loacl
第三方软件安装目录: usr/loacl,之前是 opt;
系统中的配置文件目录:etc 如果你更改了该目录下的某个文件可能会导致系统不能启动。;
用户目录:home;
- 设置容器开机启动
--restart=always
- 设置特权级运行的容器
--privileged=true
- 有的时候我们需要容器具备更多的权限,比如操作内核模块,控制 swap 交换分区,挂载 USB 磁盘,修改 MAC 地址等
- docker cp 配置文件从容器中复制到宿主机
docker cp 58:/etc/nginx/nginx.conf /nginx.conf
58:容器id;宿主机复制路径:当前路径
参考连接
搭建
- pull nginx
docker pull nginx:1.14.0
- 启动 nginx
docker run -d -p 80:80
--name nginx
--restart=always
--privileged=true
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /usr/local/nginx/html/:/usr/share/nginx/html/
-v /usr/local/nginx/logs/:/var/log/nginx/
-v /usr/local/nginx/conf/:/etc/nginx/conf.d
nginx:1.14.0
- 初始化nginx.config文件
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#include /etc/nginx/conf.d
后台多节点转发sessionid变化
- 可以将负载轮询方式改为iphash,每个IP发送到同一个后端
- Nginx之upstream的四种配置方式
关于端口映射监听的问题
- 使用nginx代理请求到百度
- nginx监听的端口 需要映射到宿主机; 如 -p 80:80 -p 8847:8847
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期