タイトルが全て!
なんだかサーバーが重いと思ったらhttpdの負荷が高くloadavgも高い。
アクセスログを見たら海外のIPアドレスからPOST /wp-login.phpばっかり。
こりゃ重くもなるわなーということで手っ取り早くwp-login.phpにbasic認証をかける。
Apacheのhttpd.confにて
<FilesMatch wp-login.php>
AuthType Basic
AuthName "wordpress protection" (てきとう)
AuthUserFile /path/to/.htpasswd
AuthGroupFile /dev/null
require valid-user
<FilesMatch>
再読み込みさせたらみるみるうちに負荷が下がりました。
ちなみにVirtualHostでなく全体に有効にしたので各ユーザーへの連絡が大変です。
しかし今後も増えるかもしれませんしなー…
wordpressとしては一定回数のエラーでロックをかけるような実装に向かっているとか。
lighttpdだと
$HTTP["host"] == "example.com" {
(いろいろ略)
auth.backend = "htdigest"
auth.backend.htdigest.userfile = "/path/to/.htdigest"
auth.require = (
"/wp-login.php" => (
"method" => "digest",
"realm" => "wordpress protection", (てきとう)
"require" => "valid-user"
),
)
}
な感じになるはず。(たまたまdigest認証でしたけど)