AH01797:服务器配置拒绝客户端:/usr/share/doc

AH01797:服务器配置拒绝客户端:/usr/share/doc

很长一段时间以来(现在已经一个多月了),我在 apache 日志中看到如下行:

180.76.15.138 - - [24/Jun/2015:16:13:34 -0400] "GET /manual/de/mod/module-dict.html HTTP/1.1" 403 396 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
180.76.15.159 - - [24/Jun/2015:16:28:34 -0400] "GET /manual/es/mod/mod_cache_disk.html HTTP/1.1" 403 399 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
66.249.75.86 - - [24/Jun/2015:16:18:01 -0400] "GET /manual/es/programs/apachectl.html HTTP/1.1" 403 436 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
[Wed Jun 24 16:13:34.430884 2015] [access_compat:error] [pid 5059] [client 180.76.15.138:58811] AH01797: client denied by server configuration: /usr/share/doc/apache2-doc/manual/de/mod/module-dict.html
[Wed Jun 24 16:18:01.037146 2015] [access_compat:error] [pid 2791] [client 66.249.75.86:56362] AH01797: client denied by server configuration: /usr/share/doc/apache2-doc/manual/es/programs/apachectl.html
[Wed Jun 24 16:28:34.461298 2015] [access_compat:error] [pid 2791] [client 180.76.15.159:25833] AH01797: client denied by server configuration: /usr/share/doc/apache2-doc/manual/es/mod/mod_cache_disk.html

这些请求似乎确实来自 Baiduspider 和 Googlebot(使用反向 DNS 检查,如前所述这里):

user@server:~$ host 66.249.75.86
86.75.249.66.in-addr.arpa domain name pointer crawl-66-249-75-86.googlebot.com.
user@server:~$ host crawl-66-249-75-86.googlebot.com
crawl-66-249-75-86.googlebot.com has address 66.249.75.86

我读过关于这个话题的类似问题,但对于这些网站来说,这些错误实际上会阻止网站正常工作。而在我的例子中,机器人尝试访问的 html 页面并不存在,因此这是 Apache 的预期行为。唯一令人烦恼的是,尽管 Google 网站管理员工具没有显示任何错误,但 Google 似乎在索引我的网站时很慢。

我正在使用 Apache 版本 2.4.7 和以下 vhost 配置:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot "/var/www/example.com/public"
    <Directory />
        Options None
        AllowOverride None
        Order Deny,Allow
        Deny from all
        Require all denied
    </Directory>
    <Directory "/var/www/example.com/public">
        Options None
        AllowOverride FileInfo Limit Options=FollowSymLinks 
        Order Allow,Deny
        Allow from all
        Require all granted
    </Directory>

    ErrorLog /var/log/apache2/example.com/error.log
    CustomLog /var/log/apache2/example.com/access.log combined
</VirtualHost>

我的问题是:

  1. 为什么 Baiduspider 和 Googlebot 不断尝试访问我的网站上不存在且未通过网站上的任何链接引用的内容?
  2. 根据我的理解,像这样的请求应该如何GET /manual/de/mod/...映射到?/usr/share/doc/apache2-doc/manual/de/mod/.../var/www/example.com/public/manual/de/mod/...
  3. 总的来说:我是否应该担心这些行是配置错误的标志,或者对它们有解释吗?

答案1

在 2.2 中,基于客户端主机名、IP 地址和客户端请求的其他特征的访问控制是使用指令 Order、Allow、Deny 和 Satisfy 完成的。

在 2.4 中,这种访问控制以与其他授权检查相同的方式进行,使用新模块 mod_authz_host。旧的访问控制习惯用法应该被取代通过新的身份验证机制,但为了与旧配置兼容,提供了新的模块 mod_access_compat。

看起来你已经设置了新的要求指令,因此只需删除已弃用的访问指令并运行sudo service apache2 reload

答案2

由于已经过去了一段时间却没有任何答案,我决定根据我迄今为止的研究(部分)回答我自己的问题。

  1. 不幸的是,Googlebot 和 Baiduspider 为何尝试通过我的服务器访问 Apache 文档的问题仍然没有答案。
  2. 由于 Ubuntu 上预装了 Alias,因此URL/manual/...被映射到/usr/share/doc/apache2-doc/manual/...:我猜是为了方便访问文档。在我的例子中,这不需要,所以我决定通过发出a2disconf apache2-doc以下命令删除 Alias service apache2 reload
  3. 没有理由将日志条目视为配置错误的迹象,因为它们恰恰是期望的行为。在删除别名之前,对文档的访问被 vhost 配置阻止,因此返回 403“禁止”状态代码。删除别名后,服务器正确返回 404“未找到”状态代码。

答案3

确保以下选项具有正确的值并且没有在 global.conf 中被注释掉:

  • ServerName localhost(或您的服务器名称,不是 FQDN)
  • DirectoryIndex prop_value (在我的情况下是 Login.php

相关内容