温馨提示×

为什么ubuntu apache2报403

小樊
49
2026-09-05 07:46:00
栏目: 智能运维

Ubuntu 下 Apache2 报 403 Forbidden 是很常见的问题,本质原因通常是:Apache 没有权限访问你请求的资源。下面按「最常见 → 较少见」帮你系统梳理一下。


一、最常见原因(90% 的情况)

1️⃣ 目录权限不足

Apache 运行用户是 www-data,它必须能进入目录、能读文件

✅ 正确示例:

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

❌ 常见错误:

  • 目录是 root:root 且权限 700
  • 父目录没有 x 权限(无法进入)

2️⃣ Apache 配置中 Directory 禁止访问

检查配置文件(如 /etc/apache2/sites-enabled/000-default.conf):

<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

❌ 错误示例:

Require all denied

修改后重启:

sudo systemctl restart apache2

3️⃣ 没有 index 文件,且禁止目录浏览

如果目录里没有:

  • index.html
  • index.php

而配置是:

Options -Indexes

就会 403

✅ 解决:

  • 放一个 index.html
  • 或允许目录列表(不推荐生产环境)

二、VirtualHost / 站点路径问题

4️⃣ 访问的不是 DocumentRoot

例如你配的是:

DocumentRoot /home/user/site

但 Apache 默认还是 /var/www/html

✅ 确认:

apache2ctl -S

5️⃣ SELinux / AppArmor(Ubuntu 少见但可能)

Ubuntu 一般用 AppArmor

检查:

sudo aa-status

如果 /var/www 外目录被限制,可能 403


三、高级但容易忽略的情况

6️⃣ .htaccess 写错

例如:

Deny from all

RewriteRule 死循环


7️⃣ PHP / CGI 文件无权执行

sudo chmod +x index.php

8️⃣ 符号链接问题

Options FollowSymLinks

否则软链接目录会 403


四、快速自查清单 ✅

# 1. 看错误日志
sudo tail -f /var/log/apache2/error.log

# 2. 看目录权限
namei -l /var/www/html/index.html

# 3. 看 Apache 配置
apache2ctl configtest

五、如果你愿意

你可以直接把下面信息发我,我可以精准定位

  • 访问的 URL
  • error.log 报错内容
  • 站点配置文件内容
  • 目录结构 & 权限

我可以一步一步帮你修到不 403 ✅

0