首页 文章

Apache2:'AH01630: client denied by server configuration'

提问于
浏览
388

尝试通过浏览器访问localhost时出现此错误 .

AH01630: client denied by server configuration

我使用以下方法检查了我的站点文件

sudo chmod 777 -R *

这是我的配置文件:

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /home/user-name/www/myproject
<Directory />
    Options FollowSymLinks
    AllowOverride all
    Allow from all
</Directory>

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

<Directory  /home/user-name/www/myproject/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    Allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride all
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride all
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

18 回答

  • 1

    对于Wamp 3(Apache 2.4),除了按照其他答案中的描述将服务器置于联机状态之外,还可以在虚拟主机文件中使用 conf/extra/httpd-vhosts.conf
    你可能需要更换

    Require local
    

    Require all granted
    

    如果你在 httpd.conf ,这是适用的

    Include conf/extra/httpd-vhosts.conf
    
  • 1

    如果您使用的是Apache 2.4

    您必须检查允许和拒绝规则

    看看http://httpd.apache.org/docs/2.4/upgrading.html#access

    在2.2中,使用指令Order,Allow,Deny和Satisfy完成了基于客户端主机名,IP地址和客户端请求的其他特征的访问控制 . 在2.4中,使用新模块mod_authz_host以与其他授权检查相同的方式完成此类访问控制 .

    新指令是Require

    2.2配置:

    Order allow,deny
    Allow from all
    

    2.4配置:

    Require all granted
    

    另外不要忘记在这些更改后重新启动Apache服务器( # service httpd restart

  • 3

    对于所有目录,写入 Require all granted 而不是 Allow from all
    Something like

    Update

    如果以上不起作用,那么也删除以下提到的行:

    订单允许,拒绝

  • 0

    仔细检查DocumentRoot路径是否正确 . 这可能会导致此错误 .

  • 0

    我做了一些ravisorg向OSX 10.10 Yosemite建议将Apache升级到版本2.4的更改 . 以下是添加到http.conf的更改 .

    <Directory />
        AllowOverride none
        Require all denied
    </Directory>
    
    <Directory /Volumes/Data/Data/USER/Sites/>
        AllowOverride none
        Require all granted
    </Directory>
    
  • 1

    这让我绝对坚持了一天半,但如果所有其他解决方案都尝试失败,我找到了解决办法 .

    这适用于macOS .

    • 转到活动监视器(聚光灯搜索:活动)

    • 在活动监视器中搜索作为Apache服务的httpd

    • 选择属于root的那个,然后单击左上角的X将其关闭 .

    那时我立即停止了403错误,一切都按预期开始工作 . 奇怪的是我甚至没有重启apache它只是工作,我想当我去我的本地主机时它重新启动,老实说我不知道但我想问题是Apache在使用apachectl restart时实际上没有重启,或者停止或开始 . 希望这有助于某人 .

  • 29

    问题出在VirtualHost但 probablely is not

    要求全部授予

    Confirm 你的 config 是正确的,这里是正确的样本
    enter image description here

  • 703

    如果您拖尾错误日志并重新加载页面,您应该会看到有关确切问题的更多信息 .

    grab 环境变量,以便$ 实际工作......

    source /etc/apache2/envvars
    

    然后尾巴观看......

    tail -f ${APACHE_LOG_DIR}/error.log
    
  • 20

    花了几个小时后,我解决了我的自我 .

    我在vagrant vm中通过coookbook安装了Apache / 2.4.7(Ubuntu) .

    /etc/apache2/apache2.conf文件默认没有 <VirtualHost *:80> 元素 .

    为了完成它,我做了两处修改

    • 添加 <VirtualHost *:80>

    • 补充道
      选项索引FollowSymLinks
      AllowOverride all
      允许所有人

    然后我终于启动了vm ..

  • 10

    有谁想过wamp服务器默认不包含 httpd-vhosts.conf 文件 . 我的方法是删除下面的注释

    conf
      # Virtual hosts
      Include conf/extra/httpd-vhosts.conf
    

    httpd.conf 文件中 . 就这些 .

  • 0

    这让我发疯了 . 最后弄清楚问题是什么:我使用错误日志的直接路径,他们错了 .

    为什么Apache会给出一个模糊(错误)的错误消息?而是使用正确有用的错误消息,如:ErrorLog指令路径“/wrong/path/and/filename.log”无效 .

    无论如何,要修复以确保您的错误日志指令看起来像这样:

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    
  • 4

    如果您有https主机,那么不要忘记为ssl配置进行 Require all granted 更改 .

    此外,有时检查权限作为apache用户是有用的:

    # ps -eFH | grep http # get the username used by httpd
    ...
    apache   18837  2692  0 119996 9328   9 10:33 ?        00:00:00     /usr/sbin/httpd -DFOREGROUND
    # su -s/bin/bash apache # switch to that user
    bash-4.2$ whoami
    apache
    bash-4.2$ cd /home
    bash-4.2$ ls
    bash-4.2$ cd mysite.com
    bash-4.2$ ls
    bash-4.2$ cat file-which-does-not-work.txt
    
  • 2

    就我而言,

    我正在使用macOS Mojave(Apache / 2.4.34) . 在/etc/apache2/extra/httpd-vhosts.conf文件中的虚拟主机设置中存在问题 . 添加所需的目录标记后,我的问题就消失了 .

    要求全部授予

    希望完整的虚拟主机设置结构可以为您节省成本 .

    <VirtualHost *:80>
        DocumentRoot "/Users/vagabond/Sites/MainProjectFolderName/public/"
        ServerName project.loc
    
        <Directory /Users/vagabond/Sites/MainProjectFolderName/public/>
            Require all granted
        </Directory>
    
        ErrorLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-error_log"
        CustomLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-access_log" common
    </VirtualHost>
    

    所有你要做的就是用你的确切的ProjectFolderName替换MainProjectFolderName .

  • 0

    除了缺少其他答案中提到的 OrderAllow 指令之外,请注意 DirectoryMatch 指令的非匹配正则表达式也可能导致此错误 .

    如果请求的路径是 /home/user-foo1bar/www/myproject/ ,则下面的匹配器将不匹配

    <DirectoryMatch "/home/user-[a-z]+/www/myproject/">
    ...
    </DirectoryMatch>
    

    因此,即使有效的访问配置也可能导致此错误 .

  • 292

    一个模糊的(刚刚处理它),但可能的原因是一个内部mod_rewrite规则,在主配置文件(不是.htaccess)中写入存在于服务器文件系统根目录的路径 . 假设您的站点中有一个 /media 目录,并且您重写了以下内容:

    RewriteRule /some_image.png /media/some_other_location.png
    

    如果服务器的根目录中有 /media 目录,则会尝试重写(导致访问被拒绝错误),而不是一个在您的站点目录中,因为文件系统根目录首先由mod_rewrite检查,因为路径中的第一个目录存在于您的站点目录之前 .

  • 3

    问题可能是该指令不在<Directory>下

    https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html#requiredirectives

    该指令可以在<Directory>,<Files>或<Location>部分中引用,也可以在.htaccess文件中引用,以控制对服务器特定部分的访问 . 可以根据客户端主机名或IP地址控制访问 .

  • 6

    我得到了另一个可能对某人有用的人 . 从PHP 5.6 => 7.0升级后收到相同的错误消息 . 我们更改了PHP上传设置,忘记了一旦复制就更改了 . 即使我当时没有上传图片,Silverstripe(我们的CMS)拒绝保存并抛出该错误 . 增加了图像上传大小,它可以直接使用 .

  • 0

    使用Ubuntu时,请检查CGI模块是否已启用 . 如果不:

    sudo a2enmod cgi
    

相关问题