360Spider が原因で問題が発生しました。このボットは、VPS に対して 1 秒あたりのリクエストが多すぎて速度が低下します (CPU 使用率は 10 ~ 70% になりますが、通常は 1 ~ 2% です)。httpd ログを調べたところ、次のような行がありました。
182.118.25.209 - - [06/Sep/2012:19:39:08 +0300] "GET /slovar/znachenie-slova/42957-polovity.html HTTP/1.1" 200 96809 "http://www.hrinchenko.com/slovar/znachenie-slova/42957-polovity.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11; 360Spider
182.118.25.208 - - [06/Sep/2012:19:39:08 +0300] "GET /slovar/znachenie-slova/52614-rospryskaty.html HTTP/1.1" 200 100239 "http://www.hrinchenko.com/slovar/znachenie-slova/52614-rospryskaty.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11; 360Spider
等
robots.txt を使用してこのスパイダーを完全にブロックするにはどうすればよいですか? これで、私の robots.txt は次のようになります。
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
User-agent: YoudaoBot
Disallow: /
User-agent: sogou spider
Disallow: /
私は行を追加しました:
User-agent: 360Spider
Disallow: /
しかし、それはうまくいかないようです。この怒っているボットをブロックするには?
.htaccess でブロックする場合は、次のようになることに注意してください。
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
SetEnvIfNoCase Referer ^360Spider$ block_them
Deny from env=block_them
# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>
# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
そして、存在しているにも関わらず
SetEnvIfNoCase Referer ^360Spider$ block_them
Deny from env=block_them
このボットはまだ私の VPS を強制終了しようとしており、アクセス ログに記録されています。