目次
nginx におけるメンテナンスページへの切り替え方法
継続的なサービスの運用においてメンテナンスは必要不可欠なものです。
できれば簡単にメンテナンスページへの遷移と復帰はできた方が良いので、nginx におけるメンテナンスページの設定方法と切り替え手順をご紹介します。
Advertisement
メンテナンスページの設定方法
所定の場所にファイルを設置するとメンテナンスモードに移行する仕組みを導入します。
今回の設定方法で簡単に説明すると
「/var/www/tmp/maintenance」
にファイルがあればメンテナンスページにリダイレクトされて、該当のファイルを削除すればメンテナンスが解除される挙動になります。
では nginx の設定ファイルの記述方法から見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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エラーを返すことにより、検索エンジンにメンテナンス中の画面をクロールさせないようにするためです。
1 2 3 4 5 6 7 8 9 10 11 |
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'); |
Advertisement
メンテナンスページの切り替え手順
所定のファイルがあればメンテナンスページが表示され、所定のファイルが無ければメンテナンスが解除される仕組みです。そのため、touch コマンドでファイルを作成すればメンテナンス開始となり、rm コマンドでファイルを削除すればメンテナンス終了となります。
メンテナンス開始時に実行するコマンド
touch /var/www/tmp/maintenance
メンテナンス終了に実行するコマンド
rm /var/www/tmp/maintenance
Linuxの知識については下記の本も参考になるので、スキルアップにお役立てください。
三宅 英明 (著)、大角 祐介 (著)
ページ数: 440ページ
出版社:SBクリエイティブ
発売日:2015/06/06
出典:amazon
ページ数: 440ページ
出版社:SBクリエイティブ
発売日:2015/06/06
出典:amazon

Author:しき 投稿一覧
奈良県在住のエンジニア。アルバイトでゲーム開発に携わりIT業界入り。組み込みや業務系のソフト開発を経験して、その後レンタルサーバー会社にてインターネットの根幹の知識を得る。今ではスマホアプリの開発やWeb開発、インフラの構築に従事中。
関連する記事
インフラカテゴリの最新記事
-
- 2023.02.09
- docker,
[docker]対処法:コンテナにログインした時にvi(vim)コマンドが使えない
-
- 2023.01.27
- docker,
[docker]対処法:OCI runtime create failed exec: “bash”: executable file not found
-
- 2023.01.06
- ubuntu,
Debian/Ubuntu系統のサーバOSではcrontabのMAILFROMは使えない件について
-
- 2022.07.19
- ubuntu,
[AWS]Ubuntu22.04 LTS にSSH接続(ログイン)できない問題の解決方法
-
- 2022.06.07
[python]torch がインストールできない場合の対応策
-
- 2022.06.02
- cloudwatch,
[AWS]CloudWatchで監視を行う項目