当前位置: 首页 > news >正文

实测运行容器化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 错误,这通常意味着服务器理解了请求但是拒绝执行。这个问题可能由多种原因引起,以下是一些可能的原因和相应的解决方案:

  1. 文件或目录权限不正确

    • 确保 Nginx 进程运行的用户(通常是 nginxwww-data)有权读取文件和访问目录。通常,web 目录的权限应设置为 755,文件权限设置为 644。
    • 可以使用以下命令调整权限:
      sudo chmod -R 755 /path/to/webroot
      sudo chown -R nginx:nginx /path/to/webroot
      
  2. 错误的 Nginx 配置

    • 检查 Nginx 配置文件,特别是 deny 指令、rootalias 的配置,确保它们正确无误。移除或调整任何不恰当的 deny 指令,确保 rootalias 指向正确的目录。
    • 检查配置后,重新加载 Nginx 配置:
      sudo nginx -t
      sudo systemctl reload nginx
      
  3. SELinux 阻止访问

    • 如果你确定 SELinux 配置是问题所在,可以临时更改 SELinux 的模式来确认这一点:
      sudo setenforce 0
      
    • 如果这解决了问题,考虑调整 SELinux 策略,而不是永久禁用它。使用 chconsemanage 命令为 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
      
  4. autoindex 关闭

    • 如果你希望列出目录中的文件,确保在 Nginx 配置文件中的相关 location 块中启用 autoindex
      location /some/path/ {autoindex on;
      }
      
  5. 防火墙或安全软件限制

    • 检查是否有防火墙或安全软件阻止了对 Nginx 的访问。
  6. Docker 端口映射配置错误

    • 确保在启动容器时正确使用了 -p--publish 参数指定端口映射。
  7. Nginx 配置文件错误

    • 检查 Nginx 的配置文件是否有语法错误,可以使用 nginx -t 命令测试配置文件是否正确。

解决这些问题后,通常可以解决 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如何导出动态列

动态也有多重含义:本文将描述两种动态场景下的解决方案 场景一:例如表头第一列固定为动物,且必定有第二列,第二列的表头可能为猫 也可能为狗;这是列数固定,列名不固定的场景; 场景二&#xff1…...

[Linux] 进程间通信

进程间通信(Inter-Process Communication, IPC)是指不同进程之间的数据交换与协作。在Linux中,进程间通信有多种方式,每种方式都有其适用的场景。本文将介绍Linux中常见的几种进程间通信方法:管道(Pipe&…...

【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-最大的数

CL13 最大的数(20 分) 输入一个有 n 个无重复元素的整数数组 a&#xff0c;输出数组中最大的数。提示&#xff1a;如使用排序库函数 sort()&#xff0c;需要包含头文件#include 。输入&#xff1a; 第一行是一个正整数 n(2<n<20)&#xff1b; 第二行包含 n 个不重复的整…...

【Linux】sudo make install 命令往系统中安装了什么 指定目录进行安装

前情提要 假如我们通过源码安装的方式&#xff0c;安装一个动态库&#xff0c;风格往往是这样的&#xff1a; # 克隆仓库 git clone https://github.com/xxx.git# 进入仓库目录 cd xxx编译 # ... 可能有一些校验代码完整性的sh命令# 构建 mkdir build cd build cmake ..# 编…...

RT-DETR融合CVPR[2020]轻量化卷积模块Ghost Module模块

RT-DETR使用教程&#xff1a; RT-DETR使用教程 RT-DETR改进汇总贴&#xff1a;RT-DETR更新汇总贴 《GhostNet: More Features from Cheap Operations》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/abs/1911.11907 代码链接&#xff1a;GitHub - huawei-noah/Effici…...

发布rust crate

文章目录 一、cargo构建的配置类型&#xff1a;dev与release两种1.编译级别2.将 crate 发布到 Crates.io对整个库的注释pub use再导出功能发布crates.io 参考 一、cargo构建的配置类型&#xff1a;dev与release两种 $ cargo buildFinished dev [unoptimized debuginfo] targe…...

Sequelize+Sqlite3使用示例

以下是一个简单的示例&#xff0c;展示了如何在Node.js中使用Express框架、Sequelize ORM以及SQLite数据库来构建一个支持RESTful API的Web应用程序。 一&#xff0c;安装必要的npm包&#xff1a; npm install express sequelize sqlite3 body-parser 二&#xff0c;创建Jav…...

完整贡献指南:如何为endoflife.date添加新的产品支持信息

完整贡献指南&#xff1a;如何为endoflife.date添加新的产品支持信息 【免费下载链接】endoflife.date Informative site with EoL dates of everything 项目地址: https://gitcode.com/gh_mirrors/en/endoflife.date 你是否想为开源项目贡献自己的力量&#xff0c;但不…...

终极指南:Lottie动画版本管理的5个专业技巧

终极指南&#xff1a;Lottie动画版本管理的5个专业技巧 【免费下载链接】lottie Lottie documentation for http://airbnb.io/lottie. 项目地址: https://gitcode.com/gh_mirrors/lo/lottie Lottie是Airbnb开发的开源动画库&#xff0c;它能让开发者轻松地在移动应用和网…...

Local SDXL-Turbo保姆级教程:导出为ONNX格式进一步优化推理速度

Local SDXL-Turbo保姆级教程&#xff1a;导出为ONNX格式进一步优化推理速度 1. 引言&#xff1a;为什么需要导出ONNX&#xff1f; 如果你已经体验过Local SDXL-Turbo那“打字即出图”的畅快感&#xff0c;可能会想&#xff1a;这速度已经很快了&#xff0c;还能不能再快一点&…...

Kandinsky-5.0-I2V-Lite-5s企业应用:HR招聘海报→候选人互动式动态介绍视频生成

Kandinsky-5.0-I2V-Lite-5s企业应用&#xff1a;HR招聘海报→候选人互动式动态介绍视频生成 1. 引言&#xff1a;让招聘海报"活"起来 想象一下这样的场景&#xff1a;你的HR团队精心设计了一份招聘海报&#xff0c;但投递量却不如预期。问题可能出在传统静态海报难…...

Fish Speech 1.5 Web界面保姆级教程:上传参考音频→文本对齐→语音生成全链路

Fish Speech 1.5 Web界面保姆级教程&#xff1a;上传参考音频→文本对齐→语音生成全链路 你是不是也想用AI生成和自己声音一模一样的语音&#xff1f;Fish Speech 1.5就能帮你实现这个愿望&#xff01;这个强大的语音合成工具不仅能生成自然流畅的语音&#xff0c;还能通过参…...

WarcraftHelper:让经典魔兽争霸III在现代电脑上焕发新生的全能助手

WarcraftHelper&#xff1a;让经典魔兽争霸III在现代电脑上焕发新生的全能助手 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸III在宽…...

5块钱的国产RISC-V芯片CH32V103能干啥?我用它复刻了一个STM32F103的小项目

5元国产RISC-V芯片实战&#xff1a;用CH32V103复刻STM32经典项目 在电子DIY领域&#xff0c;成本始终是创客们无法回避的现实问题。当我在某电商平台发现CH32V103这颗标价仅5元的RISC-V芯片时&#xff0c;第一反应是怀疑它的实用性——毕竟同级别的STM32F103C8T6价格通常在15-2…...

为什么选全屋定制,不买成品柜

1&#xff09;为什么选全屋定制&#xff0c;不买成品柜&#xff1f;​ 成品柜尺寸固定&#xff0c;苏州很多户型飘窗、梁位、管道多&#xff0c;放进去丑、浪费空间&#xff01;我们定制严丝合缝&#xff0c;顶天立地&#xff0c;收纳多 30%&#xff0c;颜值统一&#xff0c;和…...

深入torch.cuda.Event:解锁GPU代码性能瓶颈的精准计时器

1. 为什么你需要torch.cuda.Event&#xff1f; 在GPU编程的世界里&#xff0c;时间就是金钱。你可能遇到过这样的情况&#xff1a;明明优化了算法&#xff0c;但训练速度就是上不去&#xff1b;或者发现某个操作耗时异常&#xff0c;却找不到具体原因。这时候&#xff0c;传统的…...

Amlogic S9XXX Armbian刷机完全指南:从入门到进阶的5个关键问题

Amlogic S9XXX Armbian刷机完全指南&#xff1a;从入门到进阶的5个关键问题 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l,…...