我有一台 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-data
apache 的用户或组()可以读取它们。
有什么理由要将用户主目录用作网络服务器的 DocumentRoot 吗?
如果你确实希望它在那里,你可以尝试更改组,以允许 apache 读取它:
我不建议这样做,除非你知道自己在做什么
chgrp -R www-data /home/username/var/www/example.com/public_html
这应该可以让它工作。不过,您可能还需要更改一些权限,具体取决于您如何将文件复制/上传到该目录。
附言:再说一次,除非该目录结构有非常好的理由,否则我会选择默认的/var/www
。