实测运行容器化Nginx服务器
文章目录
- 前言
- 一、拉取Nginx镜像
- 二、创建挂载目录
- 三、运行容器化Nginx服务器
- 四、访问网页测试
- 总结
前言
`运行容器化Nginx服务器,首先确保正确安装docker,并且已启动运行,具体安装docker方法见笔者前面的博文《OpenEuler 下 Docker 安装、配置与测试实例》。本次实测环境如下:
1、宿主机win10,谷歌浏览器,IP地址为192.168.157.1
2、VMware Workstation pro17
3、安装1个虚拟机OpenEuler 24.03,IP地址为192.168.157.128
4、xshell7
具体实验思路如下:
虚拟机OpenEuler 24.03中安装docker,OpenEuler这里成为docker的宿主机, 使用docker命令拉取Nginx镜像,设置挂载目录及配置文件、项目文件,运行容器化Nginx,在Win10浏览器中测试访问Nginx服务器,显示网页效果。示意图如下:

一、拉取Nginx镜像
使用Docker命令拉取Nginx镜像:
docker pull nginx
二、创建挂载目录
在宿主机中根目录/root下,创建docker Nginx所需的挂载目录,包括配置文件目录、日志文件目录和项目文件目录:
mkdir /root/conf
mkdir /root/logs
mkdir /root/html
在 /root/nginx/conf目录下创建空配置文档:
vim nginx.conf
在 /root/html目录下创建项目文件,也就是测试网站的首页index.html,内容如图所示:

三、运行容器化Nginx服务器
运行Niginx服务的命令行如下:
docker run -id --name=nginx01 \-p 80:80 \-v $PWD/conf/nginx.conf:/etc/conf/nginx.conf \-v $PWD/logs:/var/log/nginx \-v $PWD/html:/usr/share/nginx/html \nginx
下面是对 docker run 命令的详细注释,这个命令用于启动一个名为 nginx01 的 Docker 容器,并对其进行配置:
docker run -id --name=nginx01 \ # 使用 'docker run' 命令创建并启动一个容器# '-i' 选项让容器的标准输入(STDIN)保持打开状态,即使没有附加到容器终端。# '-d' 选项让容器在后台运行。# '--name=nginx01' 为容器指定一个名称,这里是 'nginx01'。-p 80:80 \ # 将容器内部的端口 80 映射到宿主机的端口 80 上。# 这意味着访问宿主机的 80 端口将被转发到容器的 80 端口。-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \ # 将当前目录下的 'conf/nginx.conf' 文件挂载到容器的 '/etc/nginx/nginx.conf'。# '$PWD' 是当前工作目录的环境变量,它会被替换为当前目录的完整路径。# 这意味着你可以在宿主机上编辑 nginx 配置文件,而容器内的变化会立即生效。-v $PWD/logs:/var/log/nginx \ # 将当前目录下的 'logs' 目录挂载到容器的 '/var/log/nginx'。# 这样,nginx 的日志文件会保存在宿主机的 'logs' 目录中。-v $PWD/html:/usr/share/nginx/html \ # 将当前目录下的 'html' 目录挂载到容器的 '/usr/share/nginx/html'。# 这意味着你的网站文件应该放在宿主机的 'html' 目录中,nginx 会从这个目录提供静态文件服务。nginx # 指定要运行的 Docker 镜像,这里是 'nginx'。
这个命令将创建一个名为 nginx01 的容器,使用官方的 nginx 镜像,并设置端口映射和挂载卷,以便你可以在宿主机上管理 nginx 的配置文件、日志和网站内容。容器将在后台运行,并且可以通过访问宿主机的 80 端口来访问 nginx 服务。
执行完成命令,通过docker ps查看容器目录挂载情况,如图所示:

四、访问网页测试
在win7中的浏览器中访问`http://192.168.157.128,检查Nginx是否正常工作。结果如图所示:

总结
在实际测试过程中,可能出现无法访问Nginx服务器的情况,如图所示。

这里出现这种情况,是没有创建测试网站的index.html文件所导致的。
当你在使用 Docker 部署的 Nginx 时遇到 403 Forbidden 错误,这通常意味着服务器理解了请求但是拒绝执行。这个问题可能由多种原因引起,以下是一些可能的原因和相应的解决方案:
-
文件或目录权限不正确:
- 确保 Nginx 进程运行的用户(通常是
nginx或www-data)有权读取文件和访问目录。通常,web 目录的权限应设置为 755,文件权限设置为 644。 - 可以使用以下命令调整权限:
sudo chmod -R 755 /path/to/webroot sudo chown -R nginx:nginx /path/to/webroot
- 确保 Nginx 进程运行的用户(通常是
-
错误的 Nginx 配置:
- 检查 Nginx 配置文件,特别是
deny指令、root和alias的配置,确保它们正确无误。移除或调整任何不恰当的deny指令,确保root或alias指向正确的目录。 - 检查配置后,重新加载 Nginx 配置:
sudo nginx -t sudo systemctl reload nginx
- 检查 Nginx 配置文件,特别是
-
SELinux 阻止访问:
- 如果你确定 SELinux 配置是问题所在,可以临时更改 SELinux 的模式来确认这一点:
sudo setenforce 0 - 如果这解决了问题,考虑调整 SELinux 策略,而不是永久禁用它。使用
chcon或semanage命令为 Nginx 设置正确的访问上下文:sudo restorecon -Rv /path/to/webroot sudo semanage fcontext -a -t httpd_sys_content_t "/path/to/webroot(/.*)?" sudo restorecon -R /path/to/webroot
- 如果你确定 SELinux 配置是问题所在,可以临时更改 SELinux 的模式来确认这一点:
-
autoindex 关闭:
- 如果你希望列出目录中的文件,确保在 Nginx 配置文件中的相关
location块中启用autoindex:location /some/path/ {autoindex on; }
- 如果你希望列出目录中的文件,确保在 Nginx 配置文件中的相关
-
防火墙或安全软件限制:
- 检查是否有防火墙或安全软件阻止了对 Nginx 的访问。
-
Docker 端口映射配置错误:
- 确保在启动容器时正确使用了
-p或--publish参数指定端口映射。
- 确保在启动容器时正确使用了
-
Nginx 配置文件错误:
- 检查 Nginx 的配置文件是否有语法错误,可以使用
nginx -t命令测试配置文件是否正确。
- 检查 Nginx 的配置文件是否有语法错误,可以使用
解决这些问题后,通常可以解决 403 Forbidden 错误。如果问题仍然存在,可能需要进一步检查日志文件以获取更详细的错误信息。
相关文章:
实测运行容器化Nginx服务器
文章目录 前言一、拉取Nginx镜像二、创建挂载目录三、运行容器化Nginx服务器四、访问网页测试 总结 前言 运行容器化Nginx服务器,首先确保正确安装docker,并且已启动运行,具体安装docker方法见笔者前面的博文《OpenEuler 下 Docker 安装、配…...
显示器接口种类 | 附图片
显示器接口类型主要包括VGA、DVI、HDMI、DP和USB Type-C等。 VGA、DVI、HDMI、DP和USB Type-C 1. 观察 VGA接口:15针 DP接口:在DP接口旁,都有一个“D”型的标志。 电脑主机:DP(D) 显示器:VGA(15针) Ref https://cloud.tenc…...
C++初阶——list
一、什么是list list是一个可以在序列的任意位置进行插入和删除的容器,并且可以进行双向迭代。list的底层是一个双向链表,双向链表可以将它们包含的每个元素存储在不同且不相关的存储位置。通过将每个元素与前一个元素的链接和后一个元素的链接关联起来&…...
软件设计师-排序算法
冒泡排序 每一趟冒泡排序,从第0个元素开始,和后面的元素比较,如果大于就交换,否则不变,每次冒泡可以把最大的元素放到最后一个,第一次冒泡的终点是n-1,第二趟的是n-2,直到最后剩下一个元素。时间复杂度O(n…...
即插即用篇 | YOLOv8 引入 代理注意力 AgentAttention
Transformer模型中的注意力模块是其核心组成部分。虽然全局注意力机制具有很强的表达能力,但其高昂的计算成本限制了在各种场景中的应用。本文提出了一种新的注意力范式,称为“代理注意力”(Agent Attention),以在计算效率和表示能力之间取得平衡。代理注意力使用四元组(Q…...
020_Servlet_Mysql学生选课系统(新版)_lwplus87
摘 要 随着在校大学生人数的不断增加,教务系统的数据量也不断的上涨。针对学生选课这一环节,本系统从学生网上自主选课以及课程发布两个大方面进行了设计,基本实现了学生的在线信息查询、选课功能以及教师对课程信息发布的管理等功能&…...
LabVIEW导入并显示CAD DXF文件图形 程序见附件
LabVIEW导入并显示CAD DXF文件图形 程序见附件 LabVIEW导入并显示CAD DXF文件图形 程序见附件 - 北京瀚文网星科技有限公司 LabVIEW广泛应用于自动化、数据采集、图形显示等领域。对于涉及CAD图形的应用,LabVIEW也提供了一些方法来导入和显示CAD DXF文件&#x…...
《云原生安全攻防》-- K8s安全防护思路
从本节课程开始,我们将正式进入防护篇。通过深入理解K8s提供的多种安全机制,从防守者的角度,运用K8s的安全最佳实践来保障K8s集群的安全。 在这个课程中,我们将学习以下内容: K8s安全防护思路:掌握K8s自身提…...
鸿蒙系统的发展及开发者机遇
鸿蒙系统(HarmonyOS)凭借其分布式架构和跨设备协同能力,展现出强大的发展潜力,在智能手机、智能穿戴、车载、家居等行业领域应用日益广泛,已逐渐形成与安卓、iOS 三足鼎立的市场格局。 开发者面临的挑战 1. 技术适应与…...
Java | Leetcode Java题解之第556题下一个更大元素III
题目: 题解: class Solution {public int nextGreaterElement(int n) {int x n, cnt 1;for (; x > 10 && x / 10 % 10 > x % 10; x / 10) {cnt;}x / 10;if (x 0) {return -1;}int targetDigit x % 10;int x2 n, cnt2 0;for (; x2 %…...
OSPF动态路由配置实验:实现高效网络自动化
实验主题:OSPF动态路由协议配置 实验背景 OSPF(Open Shortest Path First)是一种基于链路状态的路由协议,广泛应用于中大型网络中。它采用Dijkstra算法计算最短路径,以确保网络中的路由更新快速、稳定,并能…...
CRM对企业有什么用?如何在实践中有效应用CRM系统?
在现在非常激烈竞争环境中,客户关系管理系统(CRM) 已经成为很多企业的“必备神器”,它不仅帮助企业高效地管理客户信息,还能提高客户满意度,增强客户忠诚度,最终推动销售增长和业务发展。然而&a…...
渗透测试之 -- Linux基础
声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章笔记的只是方便各位师傅学习知识,以下网站涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 一、Openssl 1、openssl passwd -1 123 openssl一个开源加密工具包,用于各种解密、加…...
【excel】easy excel如何导出动态列
动态也有多重含义:本文将描述两种动态场景下的解决方案 场景一:例如表头第一列固定为动物,且必定有第二列,第二列的表头可能为猫 也可能为狗;这是列数固定,列名不固定的场景; 场景二࿱…...
[Linux] 进程间通信
进程间通信(Inter-Process Communication, IPC)是指不同进程之间的数据交换与协作。在Linux中,进程间通信有多种方式,每种方式都有其适用的场景。本文将介绍Linux中常见的几种进程间通信方法:管道(Pipe&…...
【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-最大的数
CL13 最大的数(20 分) 输入一个有 n 个无重复元素的整数数组 a,输出数组中最大的数。提示:如使用排序库函数 sort(),需要包含头文件#include 。输入: 第一行是一个正整数 n(2<n<20); 第二行包含 n 个不重复的整…...
【Linux】sudo make install 命令往系统中安装了什么 指定目录进行安装
前情提要 假如我们通过源码安装的方式,安装一个动态库,风格往往是这样的: # 克隆仓库 git clone https://github.com/xxx.git# 进入仓库目录 cd xxx编译 # ... 可能有一些校验代码完整性的sh命令# 构建 mkdir build cd build cmake ..# 编…...
RT-DETR融合CVPR[2020]轻量化卷积模块Ghost Module模块
RT-DETR使用教程: RT-DETR使用教程 RT-DETR改进汇总贴:RT-DETR更新汇总贴 《GhostNet: More Features from Cheap Operations》 一、 模块介绍 论文链接:https://arxiv.org/abs/1911.11907 代码链接:GitHub - huawei-noah/Effici…...
发布rust crate
文章目录 一、cargo构建的配置类型:dev与release两种1.编译级别2.将 crate 发布到 Crates.io对整个库的注释pub use再导出功能发布crates.io 参考 一、cargo构建的配置类型:dev与release两种 $ cargo buildFinished dev [unoptimized debuginfo] targe…...
Sequelize+Sqlite3使用示例
以下是一个简单的示例,展示了如何在Node.js中使用Express框架、Sequelize ORM以及SQLite数据库来构建一个支持RESTful API的Web应用程序。 一,安装必要的npm包: npm install express sequelize sqlite3 body-parser 二,创建Jav…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...
