温馨提示×

ubuntu apache为啥报403

小樊
40
2026-10-02 06:07:42
栏目: 智能运维

在 Ubuntu 上用 Apache 出现 403 Forbidden,常见原因就那么几类,我按「出现频率」给你排一下,基本对照就能找到问题。


一、目录权限问题(最常见)

Apache 运行的用户一般是 www-data,如果它没法读你的网站目录,就会 403。

检查点

ps aux | grep apache

看到用户通常是 www-data

目录权限建议

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

⚠️ 注意:

  • 目录至少要有 755
  • 文件至少要有 644

二、DocumentRoot 指错了

如果你改过站点配置,但路径不对:

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

确认:

DocumentRoot /var/www/html

改完重启:

sudo systemctl restart apache2

三、缺少默认首页(DirectoryIndex)

如果目录里没有 index.html 或 index.php,而且没开目录浏览:

<Directory /var/www/html>
    Options -Indexes
</Directory>

就会 403。

解决

  • 放一个 index.html
  • 或开启目录列表(不推荐生产环境):
Options +Indexes

四、.htaccess 或 Directory 配置限制

常见错误配置:

Require all denied

应该是:

Require all granted

示例:

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

改完:

sudo a2enmod rewrite
sudo systemctl restart apache2

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

Ubuntu 默认用 AppArmor,不太会拦,但如果你挂载了外部磁盘:

df -h

如果网站在 /mnt/xxx,可能权限不够。


六、访问的是目录但没权限

比如你访问:

http://ip/test/

但 test 目录没权限或没 index 文件


七、看错误日志(最重要)

sudo tail -n 50 /var/log/apache2/error.log

日志里通常会直接写原因,比如:

  • client denied by server configuration
  • Permission denied: /var/www/html

快速自检清单 ✅

  • [ ] 目录属于 www-data
  • [ ] 权限 755 / 644
  • [ ] Require all granted
  • [ ] 有 index 文件
  • [ ] error.log 无 Permission denied

如果你愿意,把下面信息发我,我可以直接帮你定位:

  1. 访问的 URL
  2. error.log 报错内容
  3. 你的站点配置文件内容

我可以一步一步帮你改到能访问为止。

0 踩