Apacheで特定ホスト以外からのアクセスをメンテナンス画面にする方法 - 元RX-7乗りの適当な日々 の nginx 版。
nginx.conf でこんな感じですかね。
http { server { listen 80; root /tmp; error_page 503 /503.html; location / { if ($remote_addr ~ ^127\.0\.0\.1$ ) { break; } if (-f "/tmp/503") { return 503; } } location /503.html { } } }
- 127.0.0.1 からのアクセスはなにもしない (break で残りの rewrite をキャンセル)
- /tmp/503 というファイルが存在する場合のみ status code 503 を返す
最後の location /503.html がないと nginx のデフォルトの 503 ページが返ってしまうので、カスタマイズしたページを見せたい場合は要注意。