宝塔Linux+docker部署nginx出现403 Forbidden

本文主要讲述了宝塔+docker部署nginx出现403 Forbidden的原因,以及成功部署前端的方法步骤。

目录

  • 1、问题描述
  • 2、问题检测
    • 2.1 检测监听端口是否异常
    • 2.2 检测Docker容器是否异常
      • 2.2.1 打开宝塔Linux的软件商店,找到Docker管理器,查看前端容器是否正常打开
      • 2.2.2 没有安装Docker管理器,可以在应用商店直接搜索安装
    • 2.3 检查nginx.conf配置
    • 2.4 检查Dockerfile配置
  • 3、解决方案
  • 4、测试修改是否成功
    • 4.1 将修改后的dockerfile文件替换掉宝塔中的dockerfile
    • 4.2 再次创建前端Docker容器
    • 4.3 小报错
      • 4.3.1 出现报错,说80端口已经被占用。
      • 4.3.2 发现问题是没有权限。

1、问题描述

最近使用宝塔Linux+docker部署了一个前端项目,但部署成功后发现打不开页面,显示403 Forbidden
在这里插入图片描述

2、问题检测

2.1 检测监听端口是否异常

我这里设置的监听端口是80,检查宝塔Linux的防火墙,防火墙显示端口正常
在这里插入图片描述

2.2 检测Docker容器是否异常

2.2.1 打开宝塔Linux的软件商店,找到Docker管理器,查看前端容器是否正常打开

在这里插入图片描述
这里显示容器的端口号和状态都是正常的
在这里插入图片描述

2.2.2 没有安装Docker管理器,可以在应用商店直接搜索安装

在这里插入图片描述

2.3 检查nginx.conf配置

这里是我的nginx.conf配置,经过问同学以及在网上找资料,得出结论nginx配置是没问题的

server {
    listen 80;

    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";

    root /usr/share/nginx/html;
    include /etc/nginx/mime.types;

    location / {
        try_files $uri /index.html;
    }
}

2.4 检查Dockerfile配置

经过最终检查,问题如下图所示。我设置的工作目录和copy的dist目录路径不一致。
工作目录我写的是user,而在copy的目录里我写的usr
在这里插入图片描述

3、解决方案

修改dockerfile文件,换成如下代码

FROM nginx

# 解决容器时期与真实时间相差 8 小时的问题
RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone

# 复制代码到容器内
WORKDIR /usr/share/nginx/html/
USER root

COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf


COPY ./dist /usr/share/nginx/html/

EXPOSE 80

# 容器启动时运行 jar 包
CMD ["nginx", "-g", "daemon off;"]

4、测试修改是否成功

4.1 将修改后的dockerfile文件替换掉宝塔中的dockerfile

打开宝塔dockerfile所在目录,拖动修改过的本地dockerfile上传
在这里插入图片描述
在这里插入图片描述

4.2 再次创建前端Docker容器

由于我是使用的腾讯云的轻量应用服务器创建的宝塔Linux,因此这里直接在腾讯云里登录打开宝塔终端
在这里插入图片描述
输入 sudo -s进入root模式,防止待会出现权限问题

sudo -s

cd进入含有Dockerfile文件的目录下,输入以下代码构建新的容器

docker build -t xxxxx:0.0.1 .

将上述代码中的xxxxx替换成你的容器名,!!!注意:代码最后面有一个“ . ”,千万不能漏了。
在这里插入图片描述
在这里插入图片描述
容器构建完毕,输入docker run -p 80:80 -d xxxxxx运行刚才创建好的容器。命令中的-d作用是在后台运行该容器,删去-d则会在前台直接打开容器,这里推荐加上-d。

docker run -p 80:80 -d xxxxxx

注意使用时将上述代码中的xxxxx替换成你的容器名。

4.3 小报错

在这里插入图片描述

4.3.1 出现报错,说80端口已经被占用。

打开软件商店的Docker管理器,发现原来是上一个错误配置的容器还未停止。如图点击,直接停止该容器。
在这里插入图片描述
在这里插入图片描述
再次执行docker run -p 80:80 -d xxxxxx,启动容器。
输入 netstat -ntlp查看当前所有监听端口,输入docker ps查看当前目录启动的容器

netstat -ntlp
docker ps

在这里插入图片描述
发现运行还是失败了。仍然是403 Forbidden。在这里插入图片描述
打开宝塔Docker管理器,打开刚才运行的容器日志
在这里插入图片描述
在这里插入图片描述

4.3.2 发现问题是没有权限。

打开终端输入docker exec -i -t d0048aa75626 /bin/bash进入容器,在输入chmod -R 777 /usr/share/nginx/html赋予对应文件夹root权限。

docker exec -i -t d0048aa75626 /bin/bash
chmod -R 777 /usr/share/nginx/html

在这里插入图片描述
注意docker exec -i -t d0048aa75626 /bin/bash中的d0048aa75626 是容器id,这个可以通过在容器外输入命令docker ps查看,/usr/share/nginx/html这个是没有权限打开的文件的文件夹。如果已经在容器中,可以输入exit退出容器。
在这里插入图片描述
赋予权限完毕,再次打开公网地址,成功运行。

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

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

相关文章

LabVIEW项目中的工控机与普通电脑选择

工控机(Industrial PC)与普通电脑在硬件设计、性能要求、稳定性、环境适应性等方面存在显著差异。了解这些区别对于在LabVIEW项目中选择合适的硬件至关重要。下面将详细分析这两种设备的主要差异,并为LabVIEW项目中的选择提供指导。 ​ 硬件设…

QT6 + CMAKE编译OPENCV3.9

参考文档 [1] https://blog.csdn.net/rjkf_css/article/details/135676077 前提条件 配置好相关运行环境:QT6、OPENCV3.9的sources文件 OPENCV下载网页:https://opencv.org/releases/ QT6下载教程:https://blog.csdn.net/caoshangpa/article…

消息队列篇--基础篇(消息队列特点,应用场景、点对点和发布订阅工作模式,RabbmitMQ和Kafka代码示例等)

1、消息队列的介绍 消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。 消息队列(Message Queue,简称MQ&#xff09…

状态模式——C++实现

目录 1. 状态模式简介 2. 代码示例 3. 单例状态对象 4. 状态模式与策略模式的辨析 1. 状态模式简介 状态模式是一种行为型模式。 状态模式的定义:状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 通俗的说就是一个对象…

GESP202309 三级【进制判断】题解(AC)

》》》点我查看「视频」详解》》》 [GESP202309 三级] 进制判断 题目描述 N N N 进制数指的是逢 N N N 进一的计数制。例如,人们日常生活中大多使用十进制计数,而计算机底层则一般使用二进制。除此之外,八进制和十六进制在一些场合也是常用…

汽车敏捷开发:项目经理如何精准跟进项目流程

在敏捷开发环境中,项目经理身兼协调者、推动者、决策者等关键角色。 作为协调者,需在团队及部门间搭建沟通桥梁,确保信息流畅。 作为推动者,面对迭代中的技术难题、资源短缺等阻碍,要主动寻找解决方案,为…

数据从前端传到后端入库过程分析

数据从前端传到后端入库过程分析 概述 积累了一些项目经验,成长为一个老程序员了,自认为对各种业务和技术都能得心应手的应对了,殊不知很多时候我们借助了搜索引擎的能力,当然现在大家都是通过AI来武装自己。 今天要分析的话题是…

Netty 实战

Netty实践 1 Netty 版本选择2 Netty 模版代码2.1 Server2.2 Client 3 组件3.1 EventLoop、EventLoopGroup3.1.1 EventLoop3.1.2 EventLoopGroup 3.2 Channel3.2.1 ChannelFuture3.2.2 CloseFuture 3.3 ChannelHandler3.2.1 常用的 ChannelInboundHandlerAdapter3.2.1.1 LineBas…

Triton:内存高效注意力机制的实现与解析

Triton:内存高效注意力机制的实现与解析 引言 在深度学习领域,特别是自然语言处理(NLP)任务中,注意力机制是模型理解序列数据的关键组成部分。然而,随着模型规模和输入长度的增长,传统的注意力机制面临着…

微信小程序使用上拉加载onReachBottom。页面拖不动。一直无法触发上拉的事件。

1,可能是原因是你使用了scroll-view的标签,用onReachBottom触发加载事件。这两个是有冲突的。没办法一起使用。如果页面的样式是滚动的是无法去触发页面的onReachBottom的函数的。因此,你使用overflow:auto.来使用页面的某些元素滚动&#xf…

机器学习2 (笔记)(朴素贝叶斯,集成学习,KNN和matlab运用)

朴素贝叶斯模型 贝叶斯定理: 常见类型 算法流程 优缺点 集成学习算法 基本原理 常见方法 KNN(聚类模型) 算法性质: 核心原理: 算法流程 优缺点 matlab中的运用 朴素贝叶斯模型 朴素贝叶斯模型是基于贝叶斯…

【2024年华为OD机试】(B卷,100分)- 非严格递增连续数字序列 (JavaScriptJava PythonC/C++)

一、问题描述 题目描述 给定一个仅包含大小写字母和数字的字符串,要求找出其中最长的非严格递增连续数字序列的长度。非严格递增连续数字序列指的是序列中的数字从左到右依次递增或保持不变,例如 12234 就是一个非严格递增连续数字序列。 输入描述 输…

Android中Service在新进程中的启动流程2

目录 1、Service在客户端的启动入口 2、Service启动在AMS的处理 3、Service在新进程中的启动 4、Service与AMS的关系再续 上一篇文章中我们了解了Service在新进程中启动的大致流程,同时认识了与客户端进程交互的接口IApplicationThread以及与AMS交互的接口IActi…

Three城市引擎地图插件Geo-3d

一、简介 基于Three开发,为Three 3D场景提供GIS能力和城市底座渲染能力。支持Web墨卡托、WGS84、GCJ02等坐标系,支持坐标转换,支持影像、地形、geojson建筑、道路,植被等渲染。支持自定义主题。 二、效果 三、代码 //插件初始化…

Ubuntu环境 nginx 源码 编译安装

ubuntu 终端 使用 wget 下载源码 sudo wget http://nginx.org/download/nginx-1.24.0.tar.gz解压刚下载的源码压缩包 nginx-1.24.0.tar.gz sudo tar -zxvf nginx-1.24.0.tar.gz 解压完成 产生 nginx-1.24.0 目录 进入该目录 cd ./nginx-1.24.0 目录下有一个可执行文件 con…

【深度学习】神经网络实战分类与回归任务

第一步 读取数据 ①导入torch import torch ②使用魔法命令,使它使得生成的图形直接嵌入到 Notebook 的单元格输出中,而不是弹出新的窗口来显示图形 %matplotlib inline③读取文件 from pathlib import Path import requestsDATA_PATHPath("dat…

60,【1】BUUCF web [RCTF2015]EasySQL1

先查看源码 1&#xff0c;changepwd&#xff08;修改密码&#xff09; <?php // 开启会话&#xff0c;以便使用会话变量 session_start();// 设置页面的内容类型为 HTML 并使用 UTF-8 编码 header("Content-Type: text/html; charsetUTF-8");// 引入配置文件&…

Chrome插件:图片缩放为头像(128*128)

前置条件&#xff1a; 安装有chrome谷歌浏览器的电脑 使用步骤&#xff1a; 1.打开chrome扩展插件 2.点击管理扩展程序 3.加载已解压的扩展程序 4.选择对应文件夹 5.成功后会出现一个扩展小程序 6.点击对应小程序 7.使用小程序 8.拖拽成功后会自动保存到下载 代码&#xf…

machine learning knn算法之使用KNN对鸢尾花数据集进行分类

通过导入必要的scikit-learn导入必要的库&#xff0c;加载给定的数据&#xff0c;划分测试集和训练集之后训练预测和评估即可 具体代码如下&#xff1a; import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split f…

电子应用设计方案102:智能家庭AI鱼缸系统设计

智能家庭 AI 鱼缸系统设计 一、引言 智能家庭 AI 鱼缸系统旨在为鱼类提供一个健康、舒适的生活环境&#xff0c;同时为用户提供便捷的管理和观赏体验。 二、系统概述 1. 系统目标 - 自动维持水质稳定&#xff0c;包括水温、酸碱度、硬度和溶氧量等关键指标。 - 智能投食&…