Apache-2.4
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
這些請求似乎真的來自百度蜘蛛和 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
我已經閱讀過關於這個主題的類似問題,例如this和this,但是對於那些,這些錯誤實際上是在阻止站點正常工作。相反,在我的情況下,機器人嘗試訪問的 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>
因此,我的問題是:
- 為什麼百度蜘蛛和 Googlebot 反复嘗試訪問我網站上不存在且網站上任何連結都沒有引用的內容?
- 像這樣的請求如何
GET /manual/de/mod/...
被映射到/usr/share/doc/apache2-doc/manual/de/mod/...
,而據我了解,它們應該去哪裡/var/www/example.com/public/manual/de/mod/...
?- 一般來說:我應該擔心這些行是配置錯誤的標誌,還是有解釋?
由於一段時間過去了沒有任何答案,我決定(部分)根據我迄今為止的研究回答我自己的問題。
- 不幸的是,Googlebot 和百度蜘蛛為何試圖通過我的伺服器訪問 Apache 文件的問題仍未得到解答。
- 由於 Ubuntu 上預裝了別名,這些
/manual/...
URL 被映射到/usr/share/doc/apache2-doc/manual/...
:我猜是這樣,以便於訪問文件。在我的情況下,這不是必需的,所以我決定通過發出a2disconf apache2-doc
後跟刪除別名service apache2 reload
。- 沒有理由將日誌條目視為配置錯誤的跡象,因為它們是所需的行為。在刪除別名之前,對文件的訪問被 vhost 配置阻止,因此返回 403“禁止”狀態程式碼。刪除別名後,伺服器正確返回 404“未找到”狀態碼。
在 2.2 中,基於客戶端主機名、IP 地址和客戶端請求的其他特徵的訪問控制是使用指令 Order、Allow、Deny 和 Satisfy 完成的。
在 2.4 中,使用新模組 mod_authz_host 以與其他授權檢查相同的方式完成此類訪問控制。舊的訪問控制慣用語應該被新的身份驗證機制取代,儘管為了與舊配置兼容,提供了新模組 mod_access_compat。
看起來您已經設置了新的Require指令,因此只需刪除已棄用的訪問指令並執行
sudo service apache2 reload