尝试访问 Apache 服务器上的文件时出现 403 错误

尝试访问 Apache 服务器上的文件时出现 403 错误

我有一台 Ubuntu 14.04 服务器,http://images.example.com其中/etc/apache2/sites-enabled/richblockspoorblocks.com.conf

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName example.com
        ServerAlias images.example.com
        Header set Access-Control-Allow-Origin "*"
        DocumentRoot /home/username/var/www/example.com/public_html
        ErrorLog /home/username/var/www/example.com/logs/error.log
        CustomLog /home/username/var/www/example.com/logs/access.log combined
</VirtualHost>

我有一个文件/home/username/var/www/example.com/public_html/test.txt

但是当我使用浏览器访问 时http://images.example.com/test.txt,出现了 403 禁止错误。

Forbidden
You don't have permission to access /test.txt on this server.

Apache/2.4.7 (Ubuntu) Server at images.example.com Port 80

这是我ls -la在 中跑步时看到的内容~/

drwxrwxr-x 3 www-data username 4096 May 20 21:32 var

error.log只有一条client denied by server configuration消息。

我已经跑了apache2 restart

我必须进行什么更改才能test.txt在浏览器中看到内容?

答案1

你似乎正在放置你的网站文件和文档根目录/home/user子目录中:

    DocumentRoot /home/username/var/www/example.com/public_html

通常,Apache 在 中工作/var/www,您可能会在用户主目录中出现类似嵌套的错误。如果您上传并指向文档根目录在默认位置(/var/www/)以外的其他地方,您可能需要修复所有者/组/其他人及其权限,以便www-dataapache 的用户或组()可以读取它们。

有什么理由要将用户主目录用作网络服务器的 DocumentRoot 吗?

如果你确实希望它在那里,你可以尝试更改组,以允许 apache 读取它:

我不建议这样做,除非你知道自己在做什么

chgrp -R www-data /home/username/var/www/example.com/public_html

这应该可以让它工作。不过,您可能还需要更改一些权限,具体取决于您如何将文件复制/上传到该目录。

附言:再说一次,除非该目录结构有非常好的理由,否则我会选择默认的/var/www

相关内容