nginx にてメンテナンスページを設定する

set_nginx_maintenance_top

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

nginx におけるメンテナンスページへの切り替え方法

継続的なサービスの運用においてメンテナンスは必要不可欠なものです。

できれば簡単にメンテナンスページへの遷移と復帰はできた方が良いので、nginx におけるメンテナンスページの設定方法と切り替え手順をご紹介します。

 

メンテナンスページの設定方法

所定の場所にファイルを設置するとメンテナンスモードに移行する仕組みを導入します。

今回の設定方法で簡単に説明すると
「/var/www/tmp/maintenance」
にファイルがあればメンテナンスページにリダイレクトされて、該当のファイルを削除すればメンテナンスが解除される挙動になります。

では nginx の設定ファイルの記述方法から見てみましょう。

server {

(中略)

    index index.php index.html index.htm;

(中略)

    set $maintenance false;

    if (-e /var/www/tmp/maintenance) {
        set $maintenance true;
    }
    if ($remote_addr = "(自分のIPアドレス)") {
        set $maintenance false;
    }
    if ($uri ~ "^/maintenance/") {
        set $maintenance false;
    }
    if ($maintenance = true) {
        return 302 https://www.example.com/maintenance/;
    }
}

nginx 内で変数を作成しておき、該当のファイルがあればメンテナンスページにリダイレクトする設定を行っています。

 

次に表示するメンテナンスページについては、html ファイルにいきなり遷移せずに php ファイルを先に実行して503エラーを返しています。理由はレスポンス 503エラーを返すことにより、検索エンジンにメンテナンス中の画面をクロールさせないようにするためです。

root@hostname:/var/www/htdocs/maintenance# ls -la
total 20
drwxrwxr-x 3 example example 4096 May  4 17:24 .
drwxrwxr-x 5 example example 4096 May  4 15:12 ..
-rw-rw-r-- 1 example example 2526 May  4 17:42 index.html
-rw-rw-r-- 1 example example  107 May  4 16:18 index.php

root@hostname:/var/www/htdocs/maintenance# cat index.php 
<?php
header ('HTTP/1.0 503 Service Temporarily Unavailable');
include(dirname(__FILE__) . '/index.html');

 

メンテナンスページの切り替え手順

所定のファイルがあればメンテナンスページが表示され、所定のファイルが無ければメンテナンスが解除される仕組みです。そのため、touch コマンドでファイルを作成すればメンテナンス開始となり、rm コマンドでファイルを削除すればメンテナンス終了となります。

メンテナンス開始時に実行するコマンド

touch /var/www/tmp/maintenance

メンテナンス終了に実行するコマンド

rm /var/www/tmp/maintenance

 

 

Linuxの知識については下記の本も参考になるので、スキルアップにお役立てください。

created by Rinker
三宅 英明 (著)、大角 祐介 (著)
ページ数: 440ページ
出版社:SBクリエイティブ
発売日:2015/06/06

出典:amazon