(Apache)WordPress使用中のサーバーと画像サーバを共存させた場合の注意点

先日、サーバーのLoad Averageが120とかになって実質機能が停止しました。
ログを見たところ、存在しない画像ファイルを取得しようとして負荷が大きく上昇している様子。

そこで、クライアントアプリを調べてみたところサーバへのリクエストは1回だけで、取得失敗したから無限ループ・・・も発生していないことが確認でき、サーバのログからも裏付けが取れている。

はて、なんでだろうと思ったのでブラウザで直接画像のURLを叩くことに。
そしたらWordPressのリダイレクト機能が働き、使用中のテーマの404.phpへ遷移しました。






・・・ん?





なんでWordPressのディレクトリじゃないのにWordPressのリダイレクト機能が動くんだ?
WordPressディレクトリ:/var/www/html
画像ファイルのディレクトリ:/var/www/html/xxx/images

調べてみたところ、WordPressが起動していると画像拡張子のURLであってもアクセスがあった時点でWordPressが起動するらしい。
しかもアクセスの数だけWordPressが多重起動するらしい。
なんじゃそりゃ と思いつつも直さないとサーバが死にっぱなしなので過去事例がないかを検索。

結論から言うと、対応は2点必要でした。

1:Load Averageの上昇を抑えるために、「404.php」を削除する。
参考:http://blog.rutti.net/item_1860.html#.WZ45dJNJbBJ
 → WordPressにおける使用中テーマの404.phpを、404_bk.phpとかにリネームすればOK

2:CPUの上昇を抑えるために、以下のコードを「/var/www/html/.htaccess」に追加する。
参考:https://www.logw.jp/wpmemo/5315.html
 → 指定した拡張子のURLでリクエストがきたら、WordPressを起動しないようにする除外設定

  RewriteCond %{REQUEST_URI} !\.(jpeg|png)$

WordPressをご使用の際はご注意ください。

この記事へのコメント