Docker 安装与配置 Nginx

摘要

1、本文全面介绍了如何在 Docker 环境中安装和配置 Nginx 容器。

2、文中详细解释了如何设置 HTTPS 安全连接及配置 Nginx 以实现前后端分离的代理服务。

2、同时,探讨了通过 IP 和域名两种方式访问 Nginx 服务的具体配置方法

3、此外,文章还涵盖了 Docker 的基本操作,包括镜像创建、数据卷管理及容器的常规使用。

一、安装Nginx

1、镜像

1.2、拉取镜像
docker pull nginx:stable

# stable: 镜像标签,stable 指最新稳定版本。
# latest: 指最新版本。(如果不写,则默认拉取 latest 版本)
# 示例默认版本:docker pull nginx
1.3、查看镜像
docker images
1.4、删除镜像
docker rmi nginx:stable

2、volume 数据卷

2.2、创建 volume
docker volume create nginxConfig
docker volume create nginxHtml
docker volume create nginxLog
2.3、查看 volume
# ls:列出所有的 volume
docker volume ls

# inspect:显示一个或多个 volume 的信息
docker volume inspect nginxConfig

# 执行 inspect 后的参数说明
[
    {
        "CreatedAt": "2024-10-02T21:41:48+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/nginxConfig/_data",
        "Name": "nginxConfig",
        "Options": null,
        "Scope": "local"
    }
]

# Driver: 表示使用的驱动程序,这里是"local",表示使用本地驱动程序。
# Labels: 标签,用于对卷进行分类或标记。
# Mountpoint: 挂载点,表示卷在主机上的挂载路径。
# Name: 卷的名称。
# Options: 选项,用于配置卷的一些参数。
# Scope: 作用域,表示卷的作用范围,这里是"local",表示只在本地可见
2.4、删除 volume
# prune:删除未使用的 volume
docker volume prune

# rm:删除一个或多个指定的 volume
docker volume rm nginxConfig

2.5、创建后的目录结构如下

3、容器

3.2、创建容器
docker run 

–name nginxOne
-p 80:80
-v nginxHtml:/usr/share/nginx/html
-v nginxConfig:/etc/nginx
-v nginxLog:/var/log/nginx
-d nginx:stable

# --name nginxOne:为容器指定一个名称为 nginxOne。

# -p 80:80:将主机的 80 端口映射到容器的 80 端口,这样可以通过主机的80端口访问 Nginx 服务(左侧为宿主机端口)。

# -v 数据卷挂载,将上一步创建好的 volume 挂载到 Nginx 容器中。

# -v nginxHtml:/usr/share/nginx/html:将 nginxHtml 卷挂载到容器的 /usr/share/nginx/html 目录,用于存储 Nginx 的静态网页文件。

# -v nginxConfig:/etc/nginx:将 nginxConfig 卷挂载到容器的 /etc/nginx 目录,用于存储 Nginx 的配置文件。

# -v nginxLog:/var/log/nginx:将 nginxLog 卷挂载到容器的 /var/log/nginx 目录,用于存储 Nginx 的日志文件。

# -d:表示以后台模式运行容器。

# nginx:stable:指定要运行的镜像名称为 nginx 版本为 stable(第一步拉取的镜像)。

3.2.2、容器创建成功后,nginxConfig 数据卷中的文件理应大致如下:

3.3、查看容器
# 查看所有状态的容器
docker ps -a

# 查看正在运行的容器
docker ps

# 指定查看正在运行的容器
docker ps | grep nginxOne

# 指定查看正在运行的容器
docker ps --filter name=nginxOne

# 如果正在运行的容器中没有 nginxOne,那么你的容器多半创建失败了。
# 需要执行删除容器,再重新创建。
# 执行 logs 查看报错信息。
docker logs nginxOne 
3.3、删除容器
# 停止容器(运行中的容器需先停止再删除)
docker stop nginxOne

# 删除容器
docker rm nginxOne

# 删除容器(运行中的容器也会被删除)
docker rm -f nginxOne

4、防火墙

4.2、开放指定端口
# nginx 默认 80 端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
4.3、刷新防火墙
firewall-cmd --reload
4.4、查看已开放端口
firewall-cmd --zone=public --list-ports

ps:如果使用的是云服务器,记得去放行防火墙安全组;虚拟机玩家无视这条。

5、测试

5.2、浏览器输入服务器 IP 地址,看见 nginx 欢迎页面,即完成安装。

5.3、如有疑问请留言、私信或添加最下方联系方式。

6、默认配置文件详解

# 查看配置文件
cat /var/lib/docker/volumes/nginxConfig/_data/conf.d/default.conf

# listen 80:监听 80 端口。
# listen [::]:80:同时支持 IPv4 和 IPv6 。
# server_name localhost:监听你的 ip。

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;
#-------------------------分割线---------------------------------------


    # access_log:访问日志,记录所有访问这个服务器的请求。日志文件位置是     /var/log/nginx/host.access.log,使用的日志格式是main(通常在全局nginx.conf中定义)。

    #access_log  /var/log/nginx/host.access.log  main;
#-------------------------分割线---------------------------------------


    # location /:表示处理根路径及其所有子路径的请求。
    # root /usr/share/nginx/html:当请求时,Nginx从/usr/share/nginx/html目录寻找文件。
    # index index.html index.htm:当请求时,Nginx从/usr/share/nginx/html目录下寻找到文件后,返回 index.html 或 index.htm 页面到浏览器。

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
#-------------------------分割线---------------------------------------


    # 根据响应码,返回指定的 html 文件到浏览器。

    #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;
    }
#-------------------------分割线---------------------------------------


    # location ~ .php$:以 .php 结尾的请求,代理到 proxy_pass 地址。

    # 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;
    #}
}

二、配置 Nginx(域名 HTTPS)

ps:必要环境:

1、云服务器。

2、域名,并解析到此服务器。

3、域名的 SSL 证书。

1、创建新容器

# 停止容器(否则端口占用)
docker stop nginxOne

# 或者删除容器
docker rm -f nginxOne

# 创建容器(注意:若要支持 Https 访问,需要再映射 443 端口。
docker run 

–name nginxTwo
-p 443:443
-p 80:80
-v nginxHtml:/usr/share/nginx/html
-v nginxConfig:/etc/nginx
-v nginxLog:/var/log/nginx
-d nginx:stable

# 查看是否成功运行、浏览器再测试是否能访问
docker ps | grep nginxTwo

2、SSL 文件

# 新建目录、再将 pem、key 放入此目录
mkdir -p /var/lib/docker/volumes/nginxConfig/_data/ssl

3、配置修改

3.2、Nginx 一共分为 “主配置文件” 和 “站点配置目录”。

  • 主配置文件(全局配置):

    • 位置:/etc/nginx/nginx.conf
    • 通常不建议频繁修改 nginx.conf
    • 更改情况:调整工作进程数、修改全局的日志设置、启用或禁用某些全局模块等。
  • 站点配置文件:

    • 位置:/etc/nginx/conf.d/default.conf
    • 更改情况:修改服务器监听的端口号、修改站点的根目录、添加反向代理配置等。
  • 修改 default.conf 配置文件

    • 首先,我们通过官方文档知道了 nginx 容器的配置文件目录地址。
    • 随后,我们创建容器时,已经成功将数据卷 “nginxConfig” 挂载到了 “etc/nginx”
    • 再后,通过 docker volumeinspcet nginxConfig 命令,我们知道 “nginxConfig” 数据卷在本地的 “/var/lib/docker/volumes/nginxConfig/_data” 目录下。
    • 最后,我们修改 “/var/lib/docker/volumes/nginxConfig/_data/conf.d/default.conf ” 即可。
    • 修改:
      •   # 如果没有 vim,就用 vi; vi 用不了的话,就在电脑创建 default.conf 文件,配置好后上传服务器替换原文件;如果都不行的话,来跟我学炒饭吧。
          vim /var/lib/docker/volumes/nginxConfig/_data/conf.d/default.conf
        
  • 更改后的内容

    •   # 基本的配置,线上正式环境还需要增加其他配置
        
        server {
        
            # 监听 443 端口和开启声明 SSL
            listen       443 ssl;  
            listen  [::]:443 ssl;
        
            # 你的域名
            server_name test.com;
        
            # 注意:容器与宿主机是完全隔离的,
            # 我们指向的路径要填写容器中的路径,而不是宿主机配置文件的路径。
            # 你别问 “为什么证书文件在宿主机中,配置路径却写容器的路径,还能读取到宿主机中的文件”
            # 因为爱啊(数据卷挂载)。
        
            # SSL证书配置
            ssl_certificate     /etc/nginx/ssl/sun.pem;
            ssl_certificate_key /etc/nginx/ssl/sun.key;
        
            # 不解释写法(上面有)
            location / {
                root   /usr/share/nginx/html;
                index  index.html index.htm;
            }
        }
        
        
        server {
            listen       80;
            listen  [::]:80;
        
            # 你的域名
            server_name test.com;
        
            # HTTP请求重定向到HTTPS(要是有人非要输入 http 访问,强制重定向到 https)
            return 301 https://$server_name$request_uri;
        }
        
        
        # 后端服务配置:
        # 如果请求的 url 前缀为 api,
        # 那么该请求将被转发到本地的 5210 端口,也就是后端服务。(需要保证后端服务部署在该服务器,并且端口相同)
        # location ^~/api/ {
        #        proxy_pass http://127.0.0.1:5210; 
        #    }
      
  • 语法校验

    •   # 检测 nginx 配置是否正确
        docker exec nginxTwo nginx -t
      
  • 重载配置

    •   docker exec nginxTwo nginx -s reload
      
  • 防火墙(记得放开云服务器的安全组)

    •   # 开放 443 端口
        firewall-cmd --zone=public --add-port=443/tcp --permanent
        
        # 重新加载
        firewall-cmd --reload 
      

4、测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/944319.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux学习2.0——vi编辑器和gcc编译器的使用

vi是一种方便的代码编辑器,Linux系统一般是自带的、 vi和vim的区别:vim是vi的升级版,基础功能两者一致,不过在嵌入式开发板中 只有vi没有vim,但是在Ubuntu上我们可以使用vim编辑器,它的功能更加丰富。 这里…

有一个4*5的矩阵如下,要求编写程序计算总和与平均值,并找出其中值最大的那个元素输出,以及其所在的行号和列号。

一、题目 二、代码解析 max_value 被初始化为矩阵的第一个元素 matrix[0][0]。max_row 和 max_col 分别被初始化为 0,表示最大值所在的行和列。s 被初始化为 0,用于累加矩阵中的所有元素。外层循环 for k in range(len(matrix)) 遍历矩阵的每一行。内层…

html + css 淘宝网实战

之前有小伙伴说,淘宝那么牛逼你会写代码,能帮我做一个一样的淘宝网站吗,好呀,看我接下来如何给你做一个淘宝首页。hahh,开个玩笑。。。学习而已。 在进行html css编写之前 先了解下网页的组成和网页元素的尺寸吧 1.网页的组成 …

网神SecFox FastJson反序列化RCE漏洞复现(附脚本)

0x01 产品描述: ‌网神SecFox是奇安信网神信息技术(北京)股份有限公司推出的一款运维安全管理与审计系统‌,集“身份认证、账户管理、权限控制、运维审计”于一体,提供统一运维身份认证、细粒度的权限控制、丰富的运维审计报告、多维度的预警…

MoH:将多头注意力(Multi-Head Attention)作为头注意力混合(Mixture-of-Head Attention)

摘要 https://arxiv.org/pdf/2410.11842? 在本文中,我们对Transformer模型的核心——多头注意力机制进行了升级,旨在提高效率的同时保持或超越先前的准确度水平。我们表明,多头注意力可以表示为求和形式。鉴于并非所有注意力头都具有同等重…

uniapp——微信小程序读取bin文件,解析文件的数据内容(三)

微信小程序读取bin文件内容 读取用户选择bin文件,并解析数据内容,分包发送给蓝牙设备; 文章目录 微信小程序读取bin文件内容读取文件读取内容返回格式 API文档: getFileSystemManager 关于App端读取bin文件,请查看&…

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>组合

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; private List<List<Integer>> ret;private List<Integer> path;private int n,k;public List<List<Integer>> combine(int _n, int _k) {n _n;k _k;path new ArrayList<>();ret…

鸿蒙开发实战之“使用HiLog和HiSysEvent进行日志与系统事件管理”

HiLog和HiSysEvent作为鸿蒙&#xff08;HarmonyOS&#xff09;系统中进行日志记录和系统事件管理的关键组件&#xff0c;为开发者提供了强大的工具来追踪系统行为、调试应用以及监控设备状态。它们不仅简化了日志管理和事件追踪的流程&#xff0c;还提高了开发效率和系统可维护…

Linux(Centos 7.6)yum源配置

yum是rpm包的管理工具&#xff0c;可以自动安装、升级、删除软件包的功能&#xff0c;可以自动解决软件包之间的依赖关系&#xff0c;使得用户更方便软件包的管理。要使用yum必须要进行配置&#xff0c;个人将其分为三类&#xff0c;本地yum源、局域网yum源、第三方yum源&#…

数据中台从centos升级为国产操作系统后,资源增加字段时,提交报500错误

文章目录 背景一、步骤1.分析阶段2.查看nginx3.修改用户&#xff08;也可以修改所有者权限&#xff09; 背景 故障报错&#xff1a; nginx报错信息&#xff1a; 2024/12/19 15:25:31 [crit, 500299#0: *249 onen0 " /var/lib/nginx/tmp/cient body/0000000001" f…

uniapp 前端解决精度丢失的问题 (后端返回分布式id)

原因&#xff1a; 后端使用分布式id, id为19位数&#xff0c;导致精度丢失 &#xff0c;前端解决方法 这个是通过浏览器请求回来的数据&#xff0c;这个时候id 数据已经丢失了&#xff0c;在数据库查询不到&#xff0c;在调获详情接口的时候会有问题 实际的&#xff1a; 解决…

十大排序---下

文章目录 前言一、归并排序二、快速排序三、计数排序四、桶排序五、基数排序总结 前言 今天我们来继续学习十大排序中剩下的五个。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、归并排序 归并排序&#xff08;Merge sort&#xff09;是建立在归…

Git如何设置和修改当前分支跟踪的上游分支

目录 前言 背景 设置当前分支跟踪的上游分支 当前分支已有关联&#xff0c;删除其关联&#xff0c;重新设置上游 常用的分支操作 参考资料 前言 仅做学习记录&#xff0c;侵删 背景 在项目开发过程中&#xff0c;从master新建分支时&#xff0c;会出现没有追踪的上游分…

【笔记】Linux中vim编辑器回忆录

&#xff08;一&#xff09;替换 末行模式中 替换整个文本的某个字符为某个东西 全局替换 &#xff1a;%s/旧字符/新字符/g &#xff1a;进入命令行 % 全局范围 s 替换命令 /旧字符/新字符/ 将旧字符换为新字符 g 全局替换 局部范围替换 &#xff1a;开始行号&#xff0c;…

【玩转MacBook】Git安装

Git 官网也提到了MacBook 可以使用 Homebrew 安装 Git&#xff0c;所以在此使用 Homebrew 安装。 1、安装 Homebrew 执行安装脚本 在 Terminal 中执行如下命令&#xff1a; /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.…

Browser Use:AI智能体自动化操作浏览器的开源工具

Browser Use:AI智能体自动化操作浏览器的开源工具 Browser Use 简介1. 安装所需依赖2. 生成openai密钥3. 编写代码4. 运行代码5. 部署与优化5.1 部署AI代理5.2 优化与扩展总结Browser Use 简介 browser-use是一个Python库,它能够帮助我们将AI代理与浏览器自动化操作结合起来;…

字符串存储、分割相关总结(strncpy 函数和strtok() 函数相关)

1.想用这些函数都需要导入头文件 #include<string.h> 2.怎么创建字符串并输入 #define maxsize 100 char a[maxsize1];//创建字符串&#xff0c;预留一个位置放\0 【1】scanf("%s",a);//使用 scanf 函数读取不带空格的字符串 【2】fgets(a, sizeof(a), stdi…

缓存管理自动化:JuiceFS 企业版 Cache Group Operator 新特性发布

近期&#xff0c;JuiceFS 企业版推出了 Cache Group Operator&#xff0c;用于自动化创建和管理缓存组集群。Operator 是一种简化 Kubernetes 应用管理的工具&#xff0c;它能够自动化应用程序的生命周期管理任务&#xff0c;使部署、扩展和运维更加高效。 在推出 Operator 之前…

【蓝桥杯——物联网设计与开发】拓展模块5 - 光敏/热释电模块

目录 一、光敏/热释电模块 &#xff08;1&#xff09;资源介绍 &#x1f505;原理图 &#x1f505;AS312 &#x1f319;简介 &#x1f319;特性 &#x1f505;LDR &#xff08;2&#xff09;STM32CubeMX 软件配置 &#xff08;3&#xff09;代码编写 &#xff08;4&#x…

基于AI的增强型日内成交量比率概率预测在美股市场中的表现优于现有的基准

“IVE: Enhanced Probabilistic Forecasting of Intraday Volume Ratio with Transformers” 论文地址&#xff1a;https://arxiv.org/pdf/2411.10956 摘要 本文介绍了一种创新的金融市场成交量比预测技术&#xff0c;特别适用于VWAP&#xff08;成交量加权平均价格&#xff…