Apache:客户端被服务器configuration拒绝
我正进入(状态
[2012年4月24日12:12:55] [错误] [客户端127.0.0.1]客户端被服务器configuration拒绝:/ labs / Projects / Nebula / bin /
我的目录结构看起来像(我正在使用Symfony 2,应该是其他Web框架类似的结构)
我有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>
我不知道是什么问题,我该如何解决?
Apache 2.4.3(或者稍微早些时候)添加了一个新的安全function,通常会导致这个错误。 您还会看到“服务器configuration拒绝的客户端”的日志消息。 该function需要授权的用户身份才能访问目录。 它由Apache附带的httpd.conf中的DEFAULT打开。 您可以看到使用该指令启用该function
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>
好的,我正在使用错误的语法,我应该使用
Allow from 127.0.0.1 Allow from ::1 ...
在Apache 2.4中,旧的访问授权语法已被弃用,并被使用Require的新系统取代。
那么你想要什么就像下面这样:
<Directory "/labs/Projects/Nebula/"> Options All AllowOverride All <RequireAny> Require local Require ip 192.168.1 </RequireAny> </Directory>
这将允许从本地主机或从以“192.168.1”开头的IP地址发起的连接。
还有一个新的模块可以使Apache 2.4识别旧的语法,如果你不想马上更新你的configuration:
sudo a2enmod access_compat
你能否尝试改变“允许从127.0.0 192.168.1 :: 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范围,例如本地主机使用这个:
Allow from 127.0.0.0/8
mod_authz_host负责过滤IP范围。 你可以在那里查看详细的东西。
但也许这个问题可能与你的“apache2.conf”中的某种错误configuration有关。
在什么操作系统的Apache运行?
如果你有
Allow from All
在httpd.conf中,然后确保我们有
的index.php
就像在httpd.conf中的下面一行一样
DirectoryIndex index.html index.php
我有这个问题使用Vesta CP和我,诀窍是删除.htaccess并尝试再次访问任何文件。
这导致.htaccess文件的重新生成,然后我能够访问我的文件。
就我而言,关键是:
AllowOverride All
在虚拟主机的定义。 我希望它可以帮助别人。
此代码为我工作..
<Location /> Allow from all Order Deny,Allow </Location>
希望这可以帮助别人