文档首页> 常见问题> 打开网站报 403 Forbidden 的常见原因

打开网站报 403 Forbidden 的常见原因

发布时间:2026-03-26 09:31        更新时间:2026-03-27 02:03
403 由 Web 服务器主动拒绝:请求收到了,但服务器判定"这个文件不给你看"。同一套程序有人正常有人 403,原因基本落在四类。 一、文件权限不足 Web 进程以特定用户运行(nginx 或 www-data),读不到文件就回 403。核对运行用户和文件属主: ps aux | grep nginx ls -l /www/website/index.html 目录需要 755,文件需要 644,属主不对用 chown -R 修正。检查顺序由外向内:先各级目录的可执行权限,再文件本身的读权限,任何一环断了都不行。还有一种隐蔽情况:网站放在家目录下,而家目录权限是 700,Web 进程怎么都穿不进去,把中间各级路径的执行权限放开即可。CentOS 上权限看着都对还报 403,要想到 SELinux:getenforce 输出 Enforcing 时,用 chcon -R -t httpd_sys_content_t /www/website 给目录补上正确的安全上下文,或临时 setenforce 0 验证是不是它。 二、没有默认首页 访问目录时,服务器按 index 指令的顺序找默认文件。目录里既没有 index.html 也没有 index.php,而目录列表功能又是关闭状态(默认关闭),就回 403。特征很好认:访问具体文件名能打开、访问目录就 403,就是缺默认首页。nginx 里补上 index index.html index.php;,并确认文件名大小写和实际文件完全一致。从 Windows 环境迁移上来的站点,默认首页常是 default.html 之类,与 Linux 惯例不同,别漏配。 三、规则里显式拒绝 配置的 location 块里写了 deny all,或者安全策略禁了目录浏览,访问对应路径一律 403。把 server 块里的 location 规则翻一遍,确认拒绝的范围是不是比预期大。deny 和 allow 的先后顺序有讲究,nginx 里先出现的优先,改之前看清顺序。 四、WAF(Web 应用防火墙)误拦 部署了防火墙的站点,误判也会回 403,特征是特定参数、特定 IP 段才触发。查拦截日志确认命中的规则编号,对误杀的请求加白名单。另外 403 和 401 不是一回事:401 是没登录,403 是登录了也不给看,混着说会把排查带偏。 403 的排查口诀是三看:看权限、看配置、看拦截日志。改权限时只放开必要的目录,别图省事整站 777,那会引入更大的安全隐患。