My Note

自己理解のためのブログ

Nginxでメンテナンスページの設定をする

Nginxでメンテナンスページを表示する設定について

環境

  • OS
  • nginx
    • nginx version: nginx/1.10.3 (Ubuntu)

設定

  • maintenance.htmlを配置する
    • /var/www/html/maintenance.html
  • 503レスポンスのときに動作を定義する
    • error_page 503 @maintenance;
  • @maintenanceの処理を定義する

    • rewrite ^(.*)$ /maintenance.html break;
  • maintenance.htmlのファイルが存在したら、503を返すように設定し、@maintenanceの処理を実行させる

    • メンテナンス時にmaintenance.html をセットする
if (-e /var/www/html/maintenance.html) {
      set $maintenance true;
}
if ($maintenance = true) {
      return 503;
}

/etc/nginx/sites-enabled/test.conf

  1 server {
  2   listen 80 default_server;
  3   listen [::]:80 default_server;
  4
  5   root /var/www/html;
  6   index index.html index.htm index.nginx-debian.html;
  7   server_name X.X.X.X;
  8   error_page 503 @maintenance;
  9
 10   if (-e /var/www/html/maintenance.html) {
 11         set $maintenance true;
 12   }
 13   if ($maintenance = true) {
 14         return 503;
 15   }
 16
 17   location / {
 18     try_files $uri $uri/ =404;
 19   }
 20
 21   location @maintenance {
 22     rewrite ^(.*)$ /maintenance.html break;
 23   }
 24 }

curlで叩くと以下がレスポンスがかえってきた

<html>
<p> This is Maintenance Page </p>
</html>