Apache:服务器配置拒绝客户端

时间:2012-04-27 13:06:24

标签: apache .htaccess

我正在

  

[Tue Apr 24 12:12:55 2012] [错误] [客户端127.0.0.1]客户端被服务器配置拒绝:/ labs / Projects / Nebula / bin /

我的目录结构看起来像(我使用Symfony 2,应该是其他Web框架的类似结构)

enter image description here

我有vhosts设置如:

<VirtualHost nebula:80>
    DocumentRoot "/labs/Projects/Nebula/web/"
    ServerName nebula
    ErrorLog "/var/log/httpd/nebula-errors.log"
</VirtualHost>

<Directory "/labs/Projects/Nebula/">
    Options All
    AllowOverride All
    Order allow,deny
    Allow from 127.0.0 192.168.1 ::1 localhost
</Directory>

我想知道问题是什么,我该如何解决?

9 个答案:

答案 0 :(得分:394)

Apache 2.4.3(或稍早一点)添加了一个新的安全功能,通常会导致此错误。您还会看到“客户端拒绝服务器配置”形式的日志消息。该功能要求授权用户标识访问目录。它由Apache附带的httpd.conf中的DEFAULT打开。您可以使用指令

查看功能的启用
Require all denied

这基本上就是拒绝所有用户的访问权限。要解决此问题,请删除被拒绝的指令(或更好)将以下指令添加到要授予其访问权限的目录中:

Require all granted

,如

<Directory "your directory here">
   Order allow,deny
   Allow from all
   # New directive needed in Apache 2.4.3: 
   Require all granted
</Directory>

答案 1 :(得分:11)

好的我使用了错误的语法,我应该使用

Allow from 127.0.0.1
Allow from ::1
...

答案 2 :(得分:4)

在Apache 2.4中,旧的访问授权语法已被弃用,并被使用需要的新系统取代。

您想要的是以下内容:

library(matrixStats)

z <- function(x1, x2) {
  rowMins(tcrossprod(x1 * x2, pts))
}

x %>% mutate(foo = z(V1, V2))
#   V1 V2 foo
# 1  1  6  66
# 2  2  7 154
# 3  3  8 264
# 4  4  9 396
# 5  5 10 550

这将允许来自本地主机 的连接来自以&#34; 192.168.1&#34;开头的IP地址。

如果您不想立即更新配置,还有一个新模块可以让Apache 2.4识别旧语法:

<Directory "/labs/Projects/Nebula/">
  Options All
  AllowOverride All
  <RequireAny>
    Require local
    Require ip 192.168.1
  </RequireAny>
</Directory>

答案 3 :(得分:1)

您可以尝试将“允许从127.0.0 192.168.1 :: 1 localhost”更改为“Allow from all”。 如果这可以解决您的问题,则需要减少对可以从中请求内容的位置的限制

答案 4 :(得分:1)

这是我在debian上的symfony 1.4虚拟主机文件,工作正常。

  <Directory /var/www/sf_project/web/>
    Options All Indexes FollowSymLinks    
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

如果您不想限制对特定IP范围的访问,例如localhost使用此:

Allow from 127.0.0.0/8

mod_authz_host负责过滤ip范围。你可以在那里查找详细的东西。

但也许这个问题可能与你的“apache2.conf”中的某种错误配置有关。

运行什么操作系统的apache?

答案 5 :(得分:1)

如果你有

Allow from All
在httpd.conf中

然后确保我们有

  

的index.php

如httpd.conf中的以下行

DirectoryIndex index.html index.php

答案 6 :(得分:1)

我使用Vesta CP遇到了这个问题,对我而言,诀窍是删除.htaccess并尝试再次访问任何文件。

这导致了.htaccess文件的重新生成,然后我就能访问我的文件了。

答案 7 :(得分:0)

就我而言,关键是:

AllowOverride All

在vhost定义中。 我希望它有所帮助。

答案 8 :(得分:-3)

此代码对我有用..

 <Location />
Allow from all
Order Deny,Allow
</Location> 

希望这有助于其他人