寶塔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 configgzip 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 rootCOPY ./docker/nginx.conf /etc/nginx/conf.d/default.confCOPY ./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退出容器。
在這里插入圖片描述
賦予權限完畢,再次打開公網地址,成功運行。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66819.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66819.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66819.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

光交箱啞資源巡檢過程中都要檢查哪些設備,怎樣實現智能化管理

一、光交箱啞資源管理現狀 光交箱啞資源主要包括光纖、光纜、接頭盒、配線架等設備。這些設備在通信網絡中起著至關重要的作用,但由于缺乏智能化的監控和診斷能力,管理難度較大。 效率低下:人工巡檢的頻率和覆蓋范圍有限,資源清…

代碼隨想錄——串

文章目錄 反轉字符串反轉字符串Ⅱ路徑加密反轉字符串中的單詞動態口令字符串匹配重復的子字符串 反轉字符串 344. 反轉字符串 //前后對應交換 //0<->sSize-1 //1<->sSize-2 //... //i<->sSize-1-i,i0,1,...,(sSize-1)/2 void reverseString(char* s, int s…

在K8S中使用Values文件定制不同環境下的應用配置詳解

在Kubernetes&#xff08;簡稱K8s&#xff09;環境中&#xff0c;應用程序的配置管理是一項關鍵任務。為了確保應用程序在不同環境&#xff08;如開發、測試、預發布和生產&#xff09;中都能穩定運行&#xff0c;我們需要為每個環境定制相應的配置。Values文件是在使用Helm管理…

機器學習(5):支持向量機

1 介紹 支持向量機&#xff08;Support Vector Machine&#xff0c;簡稱 SVM&#xff09;是一種監督學習算法&#xff0c;主要用于分類和回歸問題。SVM 的核心思想是找到一個最優的超平面&#xff0c;將不同類別的數據分開。這個超平面不僅要能夠正確分類數據&#xff0c;還要使…

【前端知識】簡單易懂的vue前端頁面元素權限控制

文章目錄 設計思路代碼實現1. **權限數據管理**2. **權限判斷方法**3. **動態控制元素**4. **路由權限控制**5. **無權限頁面** 總結相關文獻 在前端實現基于 Vue 的權限控制&#xff0c;通常需要結合后端返回的用戶權限數據&#xff0c;動態控制頁面元素的顯示與隱藏、按鈕的可…

250123-java設計模式

設計模式是指經過大量實踐后經過總結和理論化后優選的代碼結構。 1.1 單態設計模式 一個類只能創建一個實例化對象。 1.2 模版設計模式 比如抽象類的應用。 1.3 代理設計模式 比如接口的應用。 1.4 共享設計模式 why&#xff1f;有效的減少垃圾空間的產生。 1.5 集成設…

C#性能優化技巧:利用Lazy<T>實現集合元素的延遲加載

一、C#中的Lazy C#中的Lazy<T>是一個泛型類&#xff0c;它實現了延遲加載&#xff08;Lazy Initialization&#xff09;的功能。延遲加載是指對象的創建被推遲&#xff0c;直到第一次被使用時才進行實例化。這對于大型或資源密集型對象的性能優化非常有用&#xff0c;因…

百度APP iOS端磁盤優化實踐(上)

01 概覽 在APP的開發中&#xff0c;磁盤管理已成為不可忽視的部分。隨著功能的復雜化和數據量的快速增長&#xff0c;如何高效管理磁盤空間直接關系到用戶體驗和APP性能。本文將結合磁盤管理的實踐經驗&#xff0c;詳細介紹iOS沙盒環境下的文件存儲規范&#xff0c;探討業務緩…

docker安裝elk6.7.1-搜集java日志

docker安裝elk6.7.1-搜集java日志 如果對運維課程感興趣&#xff0c;可以在b站上、A站或csdn上搜索我的賬號&#xff1a; 運維實戰課程&#xff0c;可以關注我&#xff0c;學習更多免費的運維實戰技術視頻 0.規劃 192.168.171.130 tomcat日志filebeat 192.168.171.131 …

SpringBoot的Swagger配置

一、Swagger配置 1.添加依賴 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.2</version> </dependency> 2.修改WebMvcConfig Slf4j Configurat…

linux+docker+nacos+mysql部署

一、下載 docker pull mysql:5.7 docker pull nacos/nacos-server:v2.2.2 docker images 二、mysql部署 1、創建目錄存儲數據信息 mkdir ~/mysql cd ~/mysql 2、運行 MySQL 容器 docker run -id \ -p 3306:3306 \ --name mysql \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/…

代碼隨想錄——二叉樹(一)

文章目錄 二叉樹遍歷先序遍歷中序遍歷后序遍歷層序遍歷層序遍歷Ⅱ二叉樹的右視圖二叉樹的層平均值N插樹的層序遍歷在每個樹行中找最大值填充每個節點的下一個右側節點指針填充每個節點的下一個右側節點指針 II 二叉樹遍歷 先序遍歷 二叉樹先序遍歷 遞歸形式 /*** Definitio…

詳細介紹:持續集成與持續部署(CI/CD)技術細節(關鍵實踐、CI/CD管道、優勢與挑戰)

目錄 前言1、 持續集成&#xff08;CI&#xff09;1.1、持續集成的關鍵實踐1.2、持續集成工具1.3、持續集成的優勢 2、持續部署與持續交付&#xff08;CD&#xff09;2.1、持續交付&#xff08;Continuous Delivery&#xff09;2.2、持續部署&#xff08;Continuous Deployment…

Linux 系統服務開機自啟動指導手冊

一、引言 在 Linux 系統中&#xff0c;設置服務開機自啟動是常見的系統配置任務。本文檔詳細介紹了多種實現服務開機自啟動的方法&#xff0c;包括 systemctl 方式、通用腳本方式、crontab 方案等&#xff0c;并提供了生產環境下的方案建議和開機啟動腳本示例。 二、systemct…

Java如何向http/https接口發出請求

用Java發送web請求所用到的包都在java.net下&#xff0c;在具體使用時可以用如下代碼&#xff0c;你可以把它封裝成一個工具類 import javax.net.ssl.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Outpu…

禁止 iOS 系統瀏覽器雙指放大頁面

網上找到禁止ios縮放的方法基本都試過了,但是還是有bug,如標題所示,下面我將總結一下禁止ios縮放,雙擊縮放的方法。 方法一 在 iOS 10之前&#xff0c;iOS 和 Android 都可以通過一行 meta 標簽來禁止頁面縮放&#xff1a; <meta content"widthdevice-width, initia…

讀西瓜書的數學準備

1&#xff0c;高等數學&#xff1a;會求偏導數就行 2&#xff0c;線性代數&#xff1a;會矩陣運算就行 參考&#xff1a;線性代數--矩陣基本計算&#xff08;加減乘法&#xff09;_矩陣運算-CSDN博客 3&#xff0c;概率論與數理統計&#xff1a;知道啥是隨機變量就行

PLC通信

PLC&#xff08;可編程邏輯控制器&#xff09;通信是指 PLC 與其他設備或系統之間進行數據傳輸和信息交換的過程 一、PLC通信方式 1 &#xff09;串行通信 數據按位順序依次傳輸&#xff0c;只需要一對傳輸線&#xff0c;成本低&#xff0c;傳輸距離長&#xff0c;但速度相對…

C/C++、網絡協議、網絡安全類文章匯總

&#x1f6f8; 文章簡介 本文章主要對本博客的所有文章進行了匯總&#xff0c;方便查找。內容涉及C/C編程&#xff0c;CMake、Makefile、Shell腳本&#xff0c;GUI編程框架MFC和QT&#xff0c;Git版本控制工具&#xff0c;網絡協議基礎知識&#xff0c;網絡安全領域相關知識&a…

java 中多線程、 隊列使用實例,處理大數據業務

場景&#xff1a; 從redis 訂閱數據 調用線程來異步處理數據 直接上代碼 定義線程管理類 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org…