【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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;碰撞测试、爆炸试验、冲击试验、跌…