nginxで特定ホスト以外からのアクセスをメンテナンス画面にする方法
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 ページが返ってしまうので、カスタマイズしたページを見せたい場合は要注意。