实测运行容器化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查看容器目录挂载情况,如图所示:
在这里插入图片描述

四、访问网页测试

在win10中的浏览器中访问`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 错误。如果问题仍然存在,可能需要进一步检查日志文件以获取更详细的错误信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值