温馨提示×

为什么ubuntu apache2访问403

小樊
38
2026-08-16 19:51:26
栏目: 智能运维

Ubuntu 下 Apache2 访问出现 403 Forbidden,通常不是“一个原因”,而是下面这些最常见情况之一。可以按顺序排查。


一、最常见原因汇总(重点看前 3 个)

✅ 1. 目录权限不足(最常见)

Apache 运行的用户是:

www-data

如果网站目录 没有给 www-data 读/执行权限,就会 403。

检查

ls -ld /var/www/html

修复(推荐)

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

⚠️ 不要随便 chmod 777,不安全


✅ 2. Apache 配置中没有 Require all granted

从 Apache 2.4 开始,默认是 拒绝所有访问

检查配置

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

正确示例

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

修改后重启:

sudo systemctl restart apache2

✅ 3. 访问的是目录,但没有 index 文件

如果你访问的是:

http://ip/

但目录里没有:

index.html / index.php / index.htm

Options 又没开启目录浏览,就会 403。

解决方式之一

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

或允许目录浏览(不推荐生产环境):

Options +Indexes

二、SELinux / AppArmor(Ubuntu 常见是 AppArmor)

Ubuntu 默认 没有 SELinux,但可能有 AppArmor

你可以先临时排除:

sudo systemctl stop apparmor
sudo systemctl restart apache2

如果恢复,说明是权限策略问题。


三、你访问的是自定义目录(比如 /home)

如果你把网站放在:

/home/user/www

即使权限对,Apache 也可能 403。

解决

sudo nano /etc/apache2/apache2.conf

确认有:

<Directory /home/user/www>
    Require all granted
</Directory>

并且目录权限:

chmod 755 /home/user
chmod 755 /home/user/www

四、.htaccess 导致 403

如果启用了 AllowOverride.htaccess 里写错也会 403。

排查

mv /var/www/html/.htaccess /var/www/html/.htaccess.bak

然后刷新页面。


五、访问的是 PHP 文件但 PHP 没装 / 没解析

访问 .php 直接 403,而不是下载或显示源码。

检查

php -v

安装 PHP

sudo apt install php libapache2-mod-php
sudo systemctl restart apache2

六、快速排查清单(照着做)

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

# 2. 看目录权限
ls -ld /var/www/html

# 3. 看 Apache 配置
sudo apache2ctl -S

# 4. 重启
sudo systemctl restart apache2

七、如果你愿意,我可以精准定位

你可以直接贴出:

  1. 访问的 URL
  2. /var/log/apache2/error.log 里相关报错
  3. 你的 Apache 虚拟主机配置

我可以 直接告诉你哪一行错了

0