Apache-2.4

AH01797:客戶端被伺服器配置拒絕:/usr/share/doc

  • December 22, 2020

很長一段時間以來(現在一個多月),我在 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

這些請求似乎真的來自百度蜘蛛和 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

我已經閱讀過關於這個主題的類似問題,例如thisthis,但是對於那些,這些錯誤實際上是在阻止站點正常工作。相反,在我的情況下,機器人嘗試訪問的 html 頁面不存在,因此這是 Apache 的預期行為。唯一令人煩惱的是,儘管 Google 網站管理員工具沒有顯示任何錯誤,但 Google 在索引我的網站方面似乎很慢。

我正在使用具有以下虛擬主機配置的 Apache 版本 2.4.7:

<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. 為什麼百度蜘蛛和 Googlebot 反复嘗試訪問我網站上不存在且網站上任何連結都沒有引用的內容?
  2. 像這樣的請求如何GET /manual/de/mod/...被映射到/usr/share/doc/apache2-doc/manual/de/mod/...,而據我了解,它們應該去哪裡/var/www/example.com/public/manual/de/mod/...
  3. 一般來說:我應該擔心這些行是配置錯誤的標誌,還是有解釋?

由於一段時間過去了沒有任何答案,我決定(部分)根據我迄今為止的研究回答我自己的問題。

  1. 不幸的是,Googlebot 和百度蜘蛛為何試圖通過我的伺服器訪問 Apache 文件的問題仍未得到解答。
  2. 由於 Ubuntu 上預裝了別名,這些/manual/...URL 被映射到/usr/share/doc/apache2-doc/manual/...:我猜是這樣,以便於訪問文件。在我的情況下,這不是必需的,所以我決定通過發出a2disconf apache2-doc後跟刪除別名service apache2 reload
  3. 沒有理由將日誌條目視為配置錯誤的跡象,因為它們是所需的行為。在刪除別名之前,對文件的訪問被 vhost 配置阻止,因此返回 403“禁止”狀態程式碼。刪除別名後,伺服器正確返回 404“未找到”狀態碼。

在 2.2 中,基於客戶端主機名、IP 地址和客戶端請求的其他特徵的訪問控制是使用指令 Order、Allow、Deny 和 Satisfy 完成的。

在 2.4 中,使用新模組 mod_authz_host 以與其他授權檢查相同的方式完成此類訪問控制。舊的訪問控制慣用語應該被新的身份驗證機制取代,儘管為了與舊配置兼容,提供了新模組 mod_access_compat。

看起來您已經設置了新的Require指令,因此只需刪除已棄用的訪問指令並執行sudo service apache2 reload

引用自:https://serverfault.com/questions/701507