Apache“服务器配置拒绝客户端”,尽管允许访问目录(vhost 配置)

Apache“服务器配置拒绝客户端”,尽管允许访问目录(vhost 配置)

在 Ubuntu 上的 Apache 中,我设置了一个 vhost,但在浏览器中,我一直收到“403 禁止访问”错误;日志显示“服务器配置拒绝客户端:/home/remix/“。

在网上寻找解决方案时,我发现了很多关于目录访问的帖子(允许所有人访问等),但据我所知,我已经这样做了。在httpd-vhosts.conf有以下代码:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/opt/lampp/htdocs/"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/home/remix/"
    ServerName testproject
    ServerAlias testproject
    <Directory "/home/remix/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

我还添加了

127.0.0.1    testproject

到 /etc/hosts 文件。

此外,/home/remix/ 文件夹包含一个 index.html 文件,并且 vhosts 在 httpd.conf 中启用。

有什么是我没看到的吗?

编辑:这是 Apache error_log 条目:

[Sat Aug 18 09:15:32.666938 2012] [authz_core:error] [pid 6587] 
[client 127.0.0.1:38873] AH01630: client denied by server configuration: /home/remix/

答案1

更改您的授权配置:

<Directory /home/remix/>
    #...
    Order allow,deny
    Allow from all
</Directory>

...与 Apache 2.4 版本相同。

<Directory /home/remix/>
    #...
    Require all granted
</Directory>

查看升级概述文档有关您可能需要进行的其他更改的信息 - 并请注意,您在 Google(以及本网站)上找到的大多数配置示例和帮助都是指 2.2。

答案2

检查目录的权限。我敢打赌,它被设置为拒绝除您自己之外的任何人访问,例如:

$ ls -ld /home/remix
drwx------ 92 remix remix 4096 Aug 17 22:59 /home/remix

如果你drwx------确实看到了,那么情况就是这样的。通过运行以下命令修复它:

chmod a+x /home/remix

答案3

确保运行httpd服务的用户有权访问此目录。

答案4

另一个可能导致此问题的简单(但很棘手)的陷阱是,当用户目录不在 /home/* 中,而是在其他地方,例如 /nethome/*

提供的 userdir.conf 包含如下内容:(但 Userdir: 已禁用)

$ cat /etc/httpd/conf.d/userdir.conf 
<IfModule mod_userdir.c>
    UserDir enabled
    UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

目录规范假定 ~user == /home/user。只需更改或添加目录规范,以了解用户主目录的实际位置。

很明显,但我花了一段时间才弄明白!!:-P DUH!

例如 ~user == /nethome/user

<Directory "/nethome/*/public_html">
    AllowOverride All
    Options MultiViews Indexes Includes FollowSymLinks
    Require all granted
</Directory>

另请参阅该目录中的更多开放授权。

相关内容