docker部署nginx,实时保持最新版nginx!
发布于 2024-04-03 724 次阅读
一、概要
1.1 概述
视频教程地址:https://youtu.be/3f2WPArB8Ic
今天教大家通过docker部署并使用nginx,同时很方便将nginx更新到最新版,快速升级,避免nginx漏洞带来的不利影响!
1.2 电报搜索机器人
电报极搜🔍机器人,啥都能搜到? 点我一键使用
新极搜🔍,功能也很强大! 点我一键使用
1.3 电报群问题解答
达尔文西畅聊群,大佬团在线解答! 点我一键加入
全能搜索万人群,啥都能搜到! 点我一键加入
达尔文西金融群,金融理财看这里! 点我一键加入
达尔文西畅聊2群,防失联专用群! 点我一键加入
二、部署
2.1 为什么要通过docker部署nginx
- 最开始通过apt install nginx部署,自定义配置较为复杂,升级最新版nginx比较麻烦,有时候还会把服务器现有的业务弄挂掉,使用起来非常的不便利。
- 当nginx出现漏洞时,修复nginx的时间成本比较高。
- 通过docker部署nginx,可以轻松自定义配置的路径,最新版nginx一键升级,当出现漏洞时,nginx分分钟升级到最新版,避免漏洞的危害。
docker安装脚本:
curl -fsSL https://get.docker.com | sh && ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin
2.2 nginx docker命令
#创建并进入nginx配置文件目录,不懂的话,你就别改,直接复制
mkdir -p /ibeg/ibegnginx/confs && cd /ibeg/ibegnginx/confs
#编辑nginx配置文件,把改好的nginx配置复制进来
vim nginx.conf
#配置文件放好地方之后,开始跑容器,除了配置文件的目录提前处理下,其他几个映射的目录,暂时用不到就不用管,跑docker的时候,会自动创建目录
docker run -d \
--name ibegnginx \
--restart=always \
--net=host \
-v /ibeg/ibegnginx/confs/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /ibeg/ibegnginx/htmls:/usr/share/nginx/html \
-v /ibeg/ibegnginx/logs:/var/log/nginx \
-v /ibeg/ibegnginx/certs:/ibeg/ibegnginx/certs \
nginx:latest
说明:
-d:这个选项表示在后台运行容器,即以守护进程方式运行。
--name ibegnginx:这个选项指定了容器的名称为 ibegnginx,这个名称是你为容器指定的,用于识别和操作容器。
--restart=always:这个选项指定了容器的重启策略为 always,即容器在退出时总是会被自动重启。这有助于确保 Nginx 服务在意外退出时能够自动恢复。
--net=host:这个选项指定了容器使用宿主机的网络命名空间,即容器将共享宿主机的网络栈,使得容器内的 Nginx 服务可以直接使用宿主机的网络接口。这样,Nginx 服务将可以通过宿主机的 IP 地址和端口直接访问,而无需进行端口映射。
-v /ibeg/ibegnginx/confs/nginx.conf:/etc/nginx/nginx.conf:ro:将宿主机上的 /ibeg/ibegnginx/confs/nginx.conf 文件挂载到容器内部的 /etc/nginx/nginx.conf,并且以只读 (ro) 方式挂载,:ro 表示挂载为只读,即容器内部无法修改宿主机上的配置文件。这样可以使用自定义的 Nginx 配置文件来配置 Nginx 服务。
-v /ibeg/ibegnginx/htmls:/usr/share/nginx/html:将宿主机上的 /ibeg/ibegnginx/htmls 目录挂载到容器内部的 /usr/share/nginx/html,这样可以将宿主机上的静态网页文件挂载到 Nginx 默认的网站根目录。
-v /ibeg/ibegnginx/logs:/var/log/nginx:将宿主机上的 /ibeg/ibegnginx/logs 目录挂载到容器内部的 /var/log/nginx,这样可以将 Nginx 的日志文件挂载到宿主机上,方便查看和管理。
-v /ibeg/ibegnginx/certs:/ibeg/ibegnginx/certs:将宿主机上的 /ibeg/ibegnginx/certs 目录挂载到容器内部的 /ibeg/ibegnginx/certs,这样可以将 SSL 证书文件挂载到容器内部,以便 Nginx 使用 HTTPS。
nginx:latest:这个参数指定了要使用的 Docker 镜像。这里使用的是 Nginx 官方提供的最新版本的镜像。通过这个镜像,Docker 将会创建一个新的容器,并在其中运行 Nginx 服务。
通过以上配置,你可以使用 docker run 命令启动一个 Nginx 容器,并且容器内的 Nginx 服务将会监听宿主机的端口,并且挂载了宿主机上的配置文件、静态文件、日志文件和证书文件等。
2.3 最简单的nginx配置文件
用的最多的nginx功能就是反向代理,以下是不带https的反向代理配置文件,直接复制即可使用!
#全局块
#user nobody;
worker_processes auto; #worker_processes指的是开启的线程数,一般跟逻辑CPU核数一致
#event块
events {
worker_connections 1024; #定义每个进程的最大连接数,受系统进程的最大打开文件数量限制
}
#http块
http {
#http全局块
include mime.types;
default_type application/octet-stream; #核心模块指令,默认设置为二进制流
sendfile on; #开启高效文件传输模式
keepalive_timeout 65; #keepalive_timeout设置客户端连接保存活动的超时时间
#server虚拟主机块
server {
#server全局块
listen 80; #监听端口
server_name www.ibeg.eu.org; #设置主机域名
#charset koi8-r; #设置访问的语言编码
#location块
location / { #location设置虚拟主机的基本信息
proxy_pass http://127.0.0.1:541;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
} #这个是server的大括号
#这边可以有多个server块,监听多个端口,直接把上面的server复制下来即可
}
#这个是http的大括号
2.4 配置文件更新怎么办
#配置文件更新的话,直接重启容器即可,注意ibegnginx改成你的容器名,如果你复制的是我的教程,那就是复制下面的就行了
docker restart ibegnginx
三、相关地址
nginx版本更新: https://nginx.org/en/download.html
极搜 堪称电报telegram目前最强搜索引擎,啥都能搜到!
达尔文西畅聊群,大佬团在线解答!https://t.me/dewxtalk
免费gpt4.0群,无限制白嫖gpt4.0! https://t.me/freegpt41
四、总结
- docker部署nginx真好用,省心省力,升级各方面都非常容易。
- 只要理解docker部署nginx的原理,后面基本上都告别apt install nginx了。
- docker 自有的守护程序,可以保证nginx不容易挂掉,避免网站瘫掉!