【问题标题】:client denied by server configuration客户端被服务器配置拒绝
【发布时间】:2026-02-21 21:35:01
【问题描述】:

我尝试将 kohana 3 项目设置为虚拟主机。

配置:

<VirtualHost *:80>
  DocumentRoot "D:/Devel/matysart/matysart_dev1"
  ServerName matysart-one.local
  ServerAlias www.matysart-one.local
  DirectoryIndex index.php
</VirtualHost>

错误(403):

[client 127.0.0.1] 客户端被服务器配置拒绝: D:/Devel/matysart/matysart_dev1/

有人可以帮忙吗?

【问题讨论】:

  • 只有在以下情况下才会出现此错误:客户端地址匹配 127.0.0.0/8 或客户端地址为 ::1 或连接的客户端和服务器地址相同。这是 Apache 2.4 中添加的一项新功能。简而言之,如果您在本地主机上进行测试,请确保设置了“需要本地”标志。但是,您的生产服务器不需要它

标签: apache kohana-3 virtualhost


【解决方案1】:

就我而言,我修改了目录标签。

来自

<Directory "D:/Devel/matysart/matysart_dev1">
  Allow from all
  Order Deny,Allow
</Directory>

收件人

<Directory "D:/Devel/matysart/matysart_dev1">
  Require local
</Directory>

而且它确实奏效了。 Apache 2.4.2 似乎发生了变化。

【讨论】:

  • 谢谢。我对我的开发服务器做了一个小升级,我的项目失败了。 “需要本地”为我创造了奇迹:)
  • 干杯!在与 Deny 玩了一个小时后,Allow Require local 是救命稻草。
  • 这不是错误。这是一个特点。我从那里找到了httpd.apache.org/docs
  • 我对“要求全部授予”有更好的体验。
  • 这是升级到 Apache 2.4 的必需步骤。见httpd.apache.org/docs/2.4/upgrading.html#run-time
【解决方案2】:

对我来说,以下工作是从/etc/apache2/apache2.conf 中的示例复制而来的:

<Directory /srv/www/default>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Require all granted 选项是wiki.apache.org 页面中第一个问题示例的解决方案,专门针对 Apache 版本 2.4+ 的此问题。

有关 Require 选项的更多详细信息可以在 official apache page for mod_authz modulethis page too 上找到。即:

要求所有授权 -> 无条件允许访问。

【讨论】:

  • 这适用于我的本地安装 /home/userx/Development/site
【解决方案3】:

错误“客户端被服务器配置拒绝”通常意味着您的配置中的某处有 Allow fromDeny from 指令阻止访问。阅读mod_authz_host 文档了解更多详情。

您应该能够通过添加以下内容在您的 VirtualHost 中解决此问题:

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

或者使用Directory 指令:

<Directory "D:/Devel/matysart/matysart_dev1">
  Allow from all
  Order Deny,Allow
</Directory>

对您的 Apache 配置文件进行一些调查可能会发现对默认 DocumentRoot 的默认限制。

【讨论】:

  • 对我来说,以下工作是从 /etc/apache2/apache2.conf 中的示例复制而来的:` Options Indexes FollowSymLinks AllowOverride None 要求所有授予 `
  • 对我来说是Require all granted 得到了它。
【解决方案4】:

就我而言,

我正在使用 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>

您只需将 MainProjectFolderName 替换为您的确切 ProjectFolderName。

【讨论】:

    【解决方案5】:

    这对我有用..

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

    我已将此代码包含在我的 /etc/apache2/apache2.conf 中

    【讨论】:

      【解决方案6】:

      从 Apache 2.2 迁移时,我曾多次遇到这种情况。

      我发现有一个订单,否认我错过了 VIM 的搜索功能,这是默认的主要虚拟主机,第 379 行。希望这对某人有所帮助。我注释掉了 Order Deny、Allow 和 Deny from All 并且它起作用了!

      【讨论】:

        【解决方案7】:

        我的服务器具有正确的主机和 IP 列表。没有allow all 的东西。我的解决方法是将新工作站的主机名放入列表中。所以建议是:

        确保您使用的计算机实际上在允许的 IP 列表中。查看日志消息中的 IP,解析名称,检查 ifconfig / ipconfig 等。

        *由于错误消息,Google 发送给我。

        【讨论】: