タイトルが全て!
なんだかサーバーが重いと思ったら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認証でしたけど)