環境
- nginx 1.14
やりたいこと
メンテナンスするのですべてのリクエストを遮断したい。けどnginx 404のエラーページ出るのは良くないので、用意した静的htmlファイルを表示させたい。
設定
まずnginxの設定を以下。
server { listen 80; server_name hogehoge.example.com; error_page 503 /sorry.html; location /sorry.html { root /var/www/; } location / { return 503; } }
で、/var/www/sorry.htmlにメンテナンス告知のHTMLページをつくる。最後にsystemctl reload nginx
で完璧
どういう仕組みなの
まず
location / { return 503; }
によって全リクエストが503扱いになる。
しかしこのままだとnginx標準のエラーページが表示されてしまう。よって
error_page 503 /sorry.html;
で、エラーページを指定する。第後に
location /sorry.html { root /var/www/; }
を指定することでsorry.htmlでアクセスのみ/var/www/がroot、結果 /var/www/sorry.htmlが表示されるってわけ