docker部署nginx,实时保持最新版nginx!

发布于 2024-04-03  355 次阅读


一、概要

1.1 概述

视频教程地址:https://youtu.be/3f2WPArB8Ic

今天教大家通过docker部署并使用nginx,同时很方便将nginx更新到最新版,快速升级,避免nginx漏洞带来的不利影响!

1.2 问题解答

极搜 堪称电报telegram目前最强搜索引擎,啥都能搜到!

达尔文西畅聊群,大佬团在线解答! https://t.me/dewxtalk

达尔文西畅聊2群,防失联专用群!https://t.me/dewxtalk2

免费gpt4.0群,无限制白嫖gpt4.0! https://t.me/freegpt41

二、部署

2.1 为什么要通过docker部署nginx

  1. 最开始通过apt install nginx部署,自定义配置较为复杂,升级最新版nginx比较麻烦,有时候还会把服务器现有的业务弄挂掉,使用起来非常的不便利。
  2. 当nginx出现漏洞时,修复nginx的时间成本比较高。
  3. 通过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

四、总结

  1. docker部署nginx真好用,省心省力,升级各方面都非常容易。
  2. 只要理解docker部署nginx的原理,后面基本上都告别apt install nginx了。
  3. docker 自有的守护程序,可以保证nginx不容易挂掉,避免网站瘫掉!