2012-04-27 215 views
146

我越来越阿帕奇:客户端通过服务器配置否认

[星期二4月24日12点12分55秒2012] [错误] [客户端127.0.0.1]客户端通过服务器配置否认:/实验室/工程/星云/斌/

我的目录结构如下(我使用的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> 

我想知道最新的问题,我该如何解决它?

+1

@JiewMeng:你应该接受菲尔的答案。这似乎是Apache今天安装的(Apache 2.4)的问题。谢谢。 – dotancohen 2015-04-17 07:28:10

回答

11

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

Allow from 127.0.0.1 
Allow from ::1 
... 
+0

对于apache> 2.4这一点不能为我工作。但是,如果与@ Phil-L – 2016-07-14 06:36:48

1

您可以尝试更改“Allow from 127.0.0 192.168.1 :: 1 localhost”为“Allow from all”。 如果能解决你的问题,你需要更少的限制有关,其中的内容可以从

1

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

<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运行的操作系统是什么?

389

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> 
+2

建议的'Require all all granted'结合使用,也可以参见:http://httpd.apache.org/docs/current/upgrading.html#access – 2013-12-17 15:40:17

+8

可能还需要添加'Satisfy '要求所有授予'之后的任何' – MarkHu 2014-05-22 08:30:21

+0

@MarkHu - 您能否在这种情况下解释“满足任何”的可能必要性?我问,因为我在这里拉我的头发,并补充说这一切都为我工作。奇怪的是,该应用程序正在使用现有的vhost条目,直到最近的Apache升级到2.4.9。 Weirder再次表示,它在具有相同app/vhost和Apache/PHP版本的另一台服务器上工作正常。尽管不同的服务器 - 分别是AWS Linux和Ubuntu 14.10。奇怪...我想我需要比较每个服务器的'httpd.conf'文件,看看是否有配置差异... – 2014-07-23 01:22:18

1

Allow from All 

在httpd.conf然后确保我们有

索引。PHP

像下面一行在httpd.conf

DirectoryIndex index.html index.php 
0

在我的情况,关键是:

AllowOverride All 

在虚拟主机的定义。 我希望它可以帮助别人。

4

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

你想要什么,然后是类似如下:

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

这将允许从本地主机从以“192.168.1”开始IP地址发起要么连接。

酒店还设有一个新的模块,使阿帕奇2.4识别旧的语法,如果你不想更新你的配置的时候了:

sudo a2enmod access_compat 
-3

此代码为我工作..

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

希望这可以帮助其他人

+1

这绝对不应该鼓励添加到apache配置中。 – 2015-11-02 23:47:59

+0

这允许apache访问计算机上的每个文件。对安全非常不利。 – Deleet 2016-01-24 12:34:40

1

我有这个问题使用Vesta CP和我,诀窍是删除.htaccess并尝试再次访问任何文件。

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