温馨提示×

ubuntu apache为何出现403

小樊
38
2026-09-20 12:55:17
栏目: 智能运维

在 Ubuntu 上用 Apache 出现 403 Forbidden,通常不是“权限不够”一个原因,而是多种配置叠加导致的。下面按最常见 → 较少见给你系统梳理。


一、最常见原因(90% 问题在这里)

1️⃣ 目录权限不对(重点)

Apache 运行用户通常是:

www-data

目录必须满足:

chmod 755 /var/www
chmod 755 /var/www/html

文件:

chmod 644 index.html

✅ 父目录 必须有执行权限(x)


2️⃣ 没有默认首页文件

如果你访问的是目录:

http://ip/

Apache 会找:

index.html
index.php

如果没有,而且没开目录浏览 → 403

✅ 解决:

ls /var/www/html

没有就创建:

echo "hello" > /var/www/html/index.html

3️⃣ Directory 配置禁止访问(非常重要)

检查 Apache 配置:

sudo nano /etc/apache2/apache2.conf

常见错误写法:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

✅ 必须改成:

Require all granted

然后重启:

sudo systemctl restart apache2

二、虚拟主机配置问题

4️⃣ vhost 没开访问权限

sudo nano /etc/apache2/sites-enabled/000-default.conf

确保有:

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

三、SELinux / AppArmor(Ubuntu 一般是 AppArmor)

5️⃣ 自定义目录(如 /home/user/web)

如果你放在:

/home/xxx/web

Apache 可能 无权访问

✅ 解决方式之一:

sudo chown -R www-data:www-data /home/xxx/web
chmod 755 /home/xxx

四、.htaccess 或 Rewrite 导致

6️⃣ .htaccess 写错

例如:

Deny from all

或:

Options -Indexes

都会触发 403


五、快速排查流程(建议你照做)

# 1. 看错误日志(最关键)
sudo tail -n 50 /var/log/apache2/error.log

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

# 3. 检查配置
apache2ctl -t

# 4. 重启
sudo systemctl restart apache2

六、典型错误日志含义

日志 原因
client denied by server configuration Directory 禁止
Permission denied 文件/目录权限
No matching DirectoryIndex 没首页

七、如果你愿意

你可以直接贴:

  • 访问的 URL
  • /var/www/html 权限
  • error.log 相关报错

我可以 精准告诉你哪一行错了。

0 踩