实测运行容器化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…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
归并排序:分治思想的高效排序
目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...
C# WPF 左右布局实现学习笔记(1)
开发流程视频: https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源码: GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF应用(.NET Framework) 2.…...
关于 ffmpeg设置摄像头报错“Could not set video options” 的解决方法
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/148515355 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...
