【Nginx】403 Forbidden錯誤

當 Nginx 代理配置出現 403 Forbidden 錯誤時,通常是由于權限或配置問題導致。以下是常見原因和解決方案:


常見原因及解決方法

1. 后端服務器拒絕訪問
  • 原因:后端 HTTPS 服務配置了 IP 白名單或訪問控制
  • 解決
    1. 檢查后端服務器(如 Apache/Nginx)的訪問限制規則
    2. 將 Nginx 代理服務器的 IP 加入白名單
    3. 在后端服務中關閉臨時訪問控制(測試用)
2. Nginx 權限問題
# 在 server 塊開頭添加
user www-data;  # 確保與系統用戶一致
  • 檢查
    ps aux | grep nginx  # 查看運行用戶
    ls -ld /var/lib/nginx/  # 查看緩存目錄權限
    
  • 修復
    chown -R www-data:www-data /var/lib/nginx/
    chmod -R 755 /var/cache/nginx
    
3. 缺少索引文件(目錄訪問)
  • 現象:訪問 / 時出現 403
  • 解決
    location / {# 添加默認索引index index.html index.htm;# 或顯式禁止目錄列表autoindex off;
    }
    
4. SELinux 限制(CentOS/RHEL)
# 臨時關閉(測試用)
setenforce 0# 永久解決
semanage permissive -a httpd_t
  • 或添加策略:
    setsebool -P httpd_can_network_connect 1
    
5. 代理頭信息缺失
location / {proxy_pass https://backend;# 必須添加以下頭proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;
}

完整調試配置

server {listen 80;server_name proxy.example.com;# 權限設置user www-data;access_log /var/log/nginx/proxy_access.log;error_log /var/log/nginx/proxy_error.log debug;  # 開啟調試日志location / {proxy_pass https://backend.example.com;# 關鍵頭信息proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# HTTPS 設置proxy_ssl_server_name on;proxy_ssl_protocols TLSv1.2 TLSv1.3;# 臨時關閉證書驗證(測試)proxy_ssl_verify off;# 超時設置proxy_connect_timeout 60s;proxy_read_timeout 180s;}
}

診斷步驟

  1. 檢查 Nginx 錯誤日志

    tail -f /var/log/nginx/proxy_error.log
    

    查找 permission deniedaccess forbidden 相關條目

  2. 測試直接訪問后端

    curl -vk https://backend.example.com -H "Host: proxy.example.com"
    

    確認后端服務是否可用

  3. 檢查文件權限

    namei -l /var/lib/nginx/proxy/*
    
  4. 臨時簡化配置
    移除所有非必需配置,僅保留 proxy_passproxy_set_header 測試

  5. 測試代理連通性

    # 在 Nginx 服務器上執行
    curl -x http://localhost:80 https://google.com
    

常見錯誤日志分析

  • *13 directory index of "/var/www/html/" is forbidden
    ? 添加 index index.html; 或關閉 autoindex
  • *102 connect() to [backend] failed (13: Permission denied)
    ? SELinux 問題或防火墻阻擋
  • upstream prematurely closed connection while reading response
    ? 增加 proxy_read_timeout

提示:生產環境調試后,記得恢復證書驗證:

proxy_ssl_verify on;
proxy_ssl_trusted_certificate /etc/ssl/certs/ca-bundle.crt;

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

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

相關文章

詳解 `pip install -e .` 命令【PythonLinux】

詳解 pip install -e . 命令 pip install -e . 是 Python 開發中一個非常有用的命令,用于以"可編輯"或"開發"模式安裝當前目錄中的 Python 包。 命令分解 pip: Python 的包管理工具install: pip 的子命令,用于安裝包-e: 是 --edi…

將VSCode的配置遷移到Cursor

目錄 方式一:一鍵導入配置 1.適用場景 2.導入前的配置 3.導入步驟 4.查看導入效果 5.原理 6.注意 方式二:手動遷移配置文件 1.使用場景 2.導入步驟 3.注意 方式一:一鍵導入配置 1.適用場景 VSCode和Cursor這兩個編輯器&#xff0…

大規模流媒體系統架構實踐

📋 文章目錄 系統概述 - 流媒體系統的基本挑戰整體架構設計 - 分層架構與核心組件接入層設計 - CDN與負載均衡策略處理層架構 - 實時轉碼與分發存儲層優化 - 多級緩存與熱點數據監控與運維 - 全鏈路監控體系實戰經驗總結 - 踩坑指南與最佳實踐 🎬 系統概…

Vue 3 + Vite 項目 px 轉 vw 完整使用指南

Vue 3 Vite 項目 px 轉 vw 完整使用指南 🚀 第一步:插件安裝 1.1 安裝命令 # 使用 npm 安裝 npm install postcss-px-to-viewport-8-plugin --save-dev# 或使用 yarn 安裝 yarn add postcss-px-to-viewport-8-plugin --dev# 或使用 pnpm 安裝 pnpm a…

setsate()使用詳解原理及注意事項

📚 Flutter 狀態管理系列文章目錄 Flutter 狀態管理(setState、InheritedWidget、 Provider 、Riverpod、 BLoC / Cubit、 GetX 、MobX 、Redux) setState() 使用詳解:原理及注意事項 InheritedWidget 組件使用及原理 Flutter 中 Provider 的使用、注…

ffmpeg環境配置

ffmpeg是一個跨平臺功能強大的音視頻處理工具。它不僅能夠進行音視頻的轉換、剪切、合并等操作,還支持多種音視頻格式的解碼和編碼。無論是處理高清視頻還是音頻文件,ffmpg都能提供高效且穩定的服務。其豐富的參數設置和插件支持,使得用戶可以…

Lamp和友點CMS一鍵部署腳本(Rocky linux)

先上傳youdiancms9.3.0.zip包,可以去官網下載 #!/bin/bash #function:install apache mysql php for youdiancms9.3.0ip$(hostname -I | awk {print $1}) yhyoudian passwordyoudian123#檢查是否為root用戶 if [ "$USER" ! "root" ]; thenecho…

Arm架構下麒麟V10桌面版安裝MySQL

Arm架構下麒麟V10桌面版安裝MySQL 文章目錄 Arm架構下麒麟V10桌面版安裝MySQL基礎環境下載安裝包安裝步驟**一、準備工作****二、解壓并配置 MySQL****三、初始化 MySQL****四、啟動 MySQL 服務****五、設置環境變量****六、配置 MySQL****七、驗證安裝****常見問題****總結** …

Science Advances:皮膚附著觸覺貼片,實現多功能和增強的觸覺交互

可穿戴觸覺界面可以通過向皮膚添加觸覺刺激以及傳遞給用戶的視覺和聽覺信息來增強虛擬/增強現實系統中的沉浸式體驗。研究人員介紹了一種平錐介電彈性體致動器(FCDEA)陣列,該陣列薄而柔軟,能夠響應大面積皮膚上的電壓信號產生時空…

Ntfs!LfsGetLbcb函數分析之nt!CcPreparePinWrite

Ntfs!LfsGetLbcb函數分析之nt!CcPreparePinWrite 第一部分: 1: kd> p Ntfs!LfsPrepareLfcbForLogRecord0x78: f7179d72 e891210000 call Ntfs!LfsGetLbcb (f717bf08) 1: kd> t Ntfs!LfsGetLbcb: f717bf08 6a40 push 40h 1: kd> kc …

面試150 整數轉羅馬數字

思路 建立數字和字符的字典映射表&#xff0c;遍歷映射表做差&#xff0c;將字符添加到結果中&#xff0c;當差為0的時候&#xff0c;break退出循環。返回最后的結果output class Solution:def intToRoman(self, num: int) -> str:if num<1:return num_to_map[(1000,M)…

大模型推理-高通qnn基礎

一、高通ai 軟件的介紹 QualcommAI Engine Direct SDK(qnn) 提供較低級別、高度可定制的統一API&#xff0c;通過單獨的庫加速所有AI加速器核心上的AI模型, 可以直接用于針對特定的加速器核心或從流行的運行時&#xff08;包括Qualcomm Neural Processing SDK、TensorFlow Li…

UE5 - 制作《塞爾達傳說》中林克的技能 - 14 - 技能面板

讓我們繼續《塞爾達傳說》中林克技能的制作&#xff01;&#xff01;&#xff01; UE版本&#xff1a;5.6.0 VS版本&#xff1a;2022 本章節的核心目標&#xff1a;技能面板 先讓我們看一下完成后的效果&#xff1a; 第14章效果 本章節項目鏈接&#xff1a; 通過網盤分享的文件…

用Tensorflow進行線性回歸和邏輯回歸(八)

新的TensorFlow概念 創建簡單的機器學習系統需要學習一些新的概念。 優化器 上兩節介紹的元素已經提示了TensorFlow是如何完成機器學習的。你已學習了如何用張量操作來定義損失函數。缺少的是你不知道如何用TensorFlow進行梯度下降。盡管可以用TensorFlow元素直接用 Python定…

基于python代碼的通過爬蟲方式實現TK下載視頻(2025年6月)

Tk的視頻頁面通常需要登錄才能獲取完整數據,但通過構造匿名游客的請求,我們可以繞過登錄限制,提取視頻的元信息(如標題、ID和播放地址)。核心思路如下: 構造匿名Cookie:通過模擬瀏覽器的請求,獲取Tk服務器分配的游客Cookie。解析網頁:利用BeautifulSoup解析HTML,定位…

火山 RTC 引擎14 設置CB

一、火山RTC引擎集成時,設置CB 1、統一設置 void NRTCEngine::SetByteRtcCBS() {UserPublishStreamCallback callback = [this](const std::string& roomId, const std::string& uid, bytertc::MediaStreamType type) {this->OnSigUserPublishStream(roomId, uid, …

BUUCTF在線評測-練習場-WebCTF習題[極客大挑戰 2019]PHP1-flag獲取、解析

解題思路 打開靶場&#xff0c;提示備份 常見的備份后綴名有.bak&#xff0c;.backup&#xff0c;.zip等等 這里肯定是要掃目錄了&#xff0c;不知道是我的問題還是目錄掃描工具的問題還是BUUCTF的問題&#xff0c;每次要掃目錄能掃出一堆東西來&#xff0c;不管你用什么后綴…

對話云蝠智能:大模型如何讓企業呼叫系統從 “成本中心” 變身 “價值樞紐”?

在人工智能重塑企業服務的浪潮中&#xff0c;云蝠智能&#xff08;南京星蝠科技有限公司旗下品牌&#xff09;以深厚的技術積累和行業實踐&#xff0c;逐步成長為國內智能外呼領域的標桿企業。其發展路徑揭示了技術自主創新與場景深度結合的必然性。 一、技術架構&#xff1a;全…

Python-文件管理

1. Open方法 Python 中的文件操作主要通過內置的 open() 函數來完成&#xff0c;該函數用于打開文件&#xff0c;并返回一個文件對象。通過文件對象&#xff0c;可以進行各種文件操作&#xff0c;如讀取、寫入、關閉等。 使用 open() 方法一定要保證關閉文件對象&#xff0c;即…

高速DIC技術之推進劑樣品在霍普金森桿的高速沖擊下的變形監測與不同材質頭盔在不同沖擊位置下的變形測試-VIC-3D HS非接觸全場動態應變測量系統

工程領域對材料與結構在極端動態載荷下復雜變形行為的測量有強烈的需求&#xff0c;且這種測量必須是精確、全域、非接觸式的&#xff0c;高速DIC技術應運而生并不斷得到發展。 常見動態應用包括&#xff08;但不限于&#xff09;&#xff1a;碰撞測試、爆炸試驗、沖擊試驗、跌…