503 Service Unavailable

503 Service Unavailableは、計画的なメンテナンスや短時間の過負荷など、一時的にリクエストを処理できないことを示すHTTPレスポンスです。

503 Service Unavailableの意味

503は、一時的に利用できないことを伝えます。アプリケーションのエラー、存在しないページ、アクセス制御、恒久的な廃止の判断の代わりには使えません。Retry-Afterヘッダーで、次の試行が妥当になる時期を示せますが、クローラーの動作やインデックスの維持を保証するものではありません。

503 Service Unavailableの主な入力、チェック、判断の流れを示す図です。

判断の基準と根拠

503は、期間が限られた運用上の事情にだけ使い、事情が解消したらすぐに通常のレスポンスへ戻します。恒久的な削除には、404か410かの別の判断が必要です。修正すべき不具合を、見かけだけ計画的なメンテナンスに言い換えてはいけません。

実践の手順

http
HTTP/1.1 503 Service Unavailable
Retry-After: 3600
Cache-Control: no-store

メンテナンス用のレスポンスは、訪問者とクローラーが実際に通るエッジの経路でテストします。通常のルート、アセット、メンテナンス終了後の復旧ルートを確認します。リバースプロキシやキャッシュが、アプリケーションの復旧後も一時的なレスポンスを返し続けることがあるためです。

  1. メンテナンスの時間枠と、本当に利用できなくなるルートを決めます。
  2. ユーザー向けのシンプルなメンテナンス用レスポンスを、ステータス503で返します。
  3. Retry-Afterは、復旧までの見込み時間が分かっている場合にだけ、現実的な値で付けます。
  4. 代表的なURL、重要なアセット、メンテナンス終了後のレスポンスを監視します。
  5. 開始と終了の時刻を記録し、通常の2xx、または意図したリダイレクトのレスポンスに戻ったことを確認します。

確認方法とよくある誤り

アプリケーションのUIの外にあるHTTPクライアントで、ステータスとRetry-Afterヘッダーを取得します。そのうえで、復旧後に代表的な公開ルートを確認します。メンテナンスページが503のままキャッシュされているのは、運用上の不具合です。

決まった期間であれば、インデックスにとって必ず安全だと言い切ってはいけません。検索エンジンは、多くのシグナルから再クロールと保持を判断します。こちらで制御できるのは、停止時間を抑えることと、復旧を確認することです。

FAQ

503が適切なのは、どのような場合ですか?
メンテナンス中や過負荷のときなど、サービスが一時的にリクエストを処理できない場合です。
メンテナンスページをステータス200で返してはいけないのはなぜですか?
200は、コンテンツが正常に配信されたことを示します。503は、中断が一時的であることを伝えます。