昨日の午後からこのサイトが表示されにくくなり、夜には全く表示できなくなりました。表示されているエラーは「503エラー」。
アクセスカウンターのアクセス数がおかしな動き方をしているので気になっていたのですが、まさかサイトが表示されなくなるとは夢にも思わなかったので驚きました。
サイトを開こうとすると上の画面が表示されます。「503 ERROR 一時的なサーバー過負荷のため現在ページを表示できません」というエラーメッセージです。
この「503エラー」とは、まさにこのような場合に表示されるもので、アクセスが集中するため、サーバー側が接続を遮断・制限する場合に表示されます。
「一時的な」となっているのでそのうちに表示されるかと思っていたのですが、半日以上時間が経っても表示できない。一時的なものならとっくに復旧しているはず。これはマズいことになった。
そこで、とりあえず、サイトを表示できるようにすることにします。
503エラーの原因
このサイトはレンタルサーバーの「ロリポップ!」を利用しているので、レンタルサーバー側の不具合かと思ったのですが、特に不具合は報告されていません。
「ロリポップ!」の管理画面で、「ディスク使用量」を確認。約6割くらいの使用量なので、まだまだ余裕があります。ディスク容量がオーバーしたために発生した不具合ではありません。
次に、「同時アクセス数制限履歴」を確認。
もし、問題発生時に、このように表示されていれば、問題を特定できたのですが、実際には何も表示されていませんでした。 先ほど確認したら以下のようになっていました。問題の表示に時間がかかるようで、この機能は使えませんね。内容も違うし。制限の時間がデタラメです。
今度はアクセスログを見てみます。すると、16370件のアクセスがあったことが分かりました。503エラーが表示されたのはこれが原因です。別のアクセスログを確認すると3万件以上のアクセスがありました。
さて、この異常なアクセスはなぜ生じたのでしょうか。外国からのスパム攻撃でしょうか。
長年サイトを運営しているとスパム攻撃を受けることがあります。以前、攻撃されたときは長い時間をかけて一つずつ潰していったのですが、今回は違うと思いました。
考えられる原因は、プラグインの不具合。昨日まで何の問題もなかったのに今日になって突然不具合が発生! こんな時にまず疑うべきはWordpressのプラグインです。
ところが、ここで問題が・・。
サイトにアクセスできないため、Wordpressの管理画面も表示できません。ということは、Wordpress側からの対策ができないと言うこと。これは困ったことになった。
アクセス制限をして自分だけアクセス可能にする
とにかくWordpressの管理画面を開けなければ何も始まらない。そこで、サイトにアクセスできるように設定します。
アクセス制限で、自分のIPだけアクセス可能にする設定をします。これにより、他からのアクセスを遮断し、自分だけがアクセスできるようになります。
これには、「ロリポップ!」側から[.htaccess]に変更を加えます。
「ロリポップ!」から[ロリポップ!FTP]と進み、[.htaccess]を開き、その最後に以下の三行を追加します。
Order deny,allow deny from all allow from あなたのIP
上の「あなたのIP」は、IP確認サイトCMANを使うと便利です。現在あなたがアクセスしているIPが表示されます。
これで、サイトを開くことができ、Wordpressの管理画面にアクセス可能になります。
プラグインの停止
真っ先に疑ったのが、「Wordpress Popular Posts」というプラグインです。二ヵ月ほど前にも不具合の原因となったプラグインなのですが、便利なので懲りずに使っていました。
これを停止にします。
その後、[ロリポップ!FTP]側で、先ほど[.htaccess]に追加した三行を削除して保存。サイトにアクセスできるか確認します。
すると、正常にアクセスできるようになりました。ただ、まれに503エラーが出るときがある。
原因は他にも潜んでいそうです。
とりあえずサイトにアクセス可能になったので、あとは、時間をかけて調べることにします。
もし、スパム攻撃だったら・・
今回の不具合はプラグインが原因だと思います。しかし、スパム攻撃だったとしたらどうするか。
以前は、忍者ツールを使って特定のIPからのアクセスを制限することが可能でした。しかし、スパム攻撃は無数のIPを使って仕掛けてきます。その多くはロシアのものが使われていました。これを一つずつ潰していく必要があります。しかし、この忍者ツールのサービスが終了してしまいました。現在、使うことができません。たぶん、似たようなサービスがあると思うので、それを探すことになります。
今回は、スパム攻撃ではないようなので、正直、ホッとしています。
【参考】
[.htaccess]の設定については、「FREE SWORDER」さんの「WordPressで503エラー(503 Service Unavailable)が出た時の対処法」を参考にさせて頂きました。
追記:別のプラグインが原因だった
やっと原因が分かりました。「Jetpack by WordPress.com」というプラグインが原因でした。これを有効にすると503エラーが発生することを確認しました。更新プログラムの不具合だと思います。しばらくの間、このプラグインは停止して様子を見ることにします。
悪意あるボット、リファラースパムをブロック
一日のアクセスが1万とか2万とかあるとうれしいのですが、そんなにアクセスがあるはずがない。
アクセスログを見ると、悪意あるボット、リファラースパムが大半を占めているようです。これをブロックします。
このブロックには「All in One SEO」というプラグインを使います。
このプラグインをインストールし、「悪意あるボットのブロッカー」で、右側に表示される各種ブロッカーにチェックを入れます。
・HTTPを利用した悪質なボットをブロック
・HTTPを利用したリファラスパムをブロック
・ブロックされたボットを追跡
・カスタムブロックリストを使用
これで、ほとんどのスパムをブロックできます。
「All in One SEO」というプラグインは以前からインストールしてあったのですが、設定をしていなかったので何の役にも立っていなかったようです。