どうも、タローポチです
自分、ウェブプログラマーしているんですが、今度、サイトをメンテナンスするためサーバーを止めないといけないのですが、そのためのメンテナンス画面に切り替えるメモを書きます
使用しているウェブサーバーはnginxです
仕様は静的html(メンテナンス画面)maintenance.htmlをnow_maintenance.htmlにコピーすると画面がメンテナンスに自動的に切り替わる
特定のIPアドレスからは通常のサービス画面が表示される
now_maintenance.htmlを削除すると通常のサービス画面が表示される
上記が仕様です
メインのnginx.confファイルは書き換えない
nginx.conf内にインクルードされているファイルを書き換える
/etc/nginx/conf.d/app.inc nginx.confにインクルードされているアプリコンフ
/etc/nginx/conf.d/maintenance.inc を作成
# /etc/nginx/conf.d/app.inc
# 常時maintenance.inc読み込み
include maintenance.inc
# URLに maintenanceが含まれていたらトップではなくmaintenanceディレクトリ内を表示
location ~ ^ /maintenance/(*).html$ {
alias /home/pochi/app/maintenance/$1.html
}
# /etc/nginx/conf.d/maintenance.inc
# メンテナンス画面通常非表示
set $maintenance "false";
# maintenanceディレクトリ内にnow_maintenance.htmlがあるときはメンテナンス画面を表示
if (-f /home/pochi/app/maintenance/now_maintenance.html) {
set $maintenance true;
}
# 画像、CSSは表示
if ($request_uri ~ .*\.(jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO)){
set $maintenance "false";
}
# 自分自身はサービスアクセス可能
if ($remote_addr ~ ^192\.168\.0\.1 ) {set $maintenance "false";}
# メンテナンス画面へリダイレクト
if ($maintenance = true) {
rewrite ^ /maintenance/now_maintenance.html;
}
こんな感じですw
0 件のコメント:
コメントを投稿