nginx メンテナンス表示、特定IPは通常表示

ngx_http_geo_module (geo) を使う

  geo $developer_ip {
    default 0;
    127.0.0.1 1;
    10.0.0.0/16 1;
  }
  server {
  ...
    #set $maintenance false;
    set $maintenance true;
    if ($developer_ip) {
      set $maintenance false;
    }
    location / {
      if ($maintenance = true) {
        return 503;
      }
      ...
    }
  }
geo $allow_ip {
     default 0;
     10.0.0.0/16 1;
}

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;
    server_name 10.0.1.113;
    error_page 503 @maintenance;

  recursive_error_pages on;
  if (-e /var/www/html/maintenance.html) {
        set $maintenance true;
  }
  if ($allow_ip) {
         set $maintenance false;
  }
  if ($maintenance = true) {
        return 503;
  }

    location / {
        try_files $uri $uri/ =404;
    }

  location @maintenance {
  expires 0;
  internal;
  if (-f $request_filename) {
     break;
  }
    error_page 405 = /maintenance.html;
    rewrite ^(.*)$ /maintenance.html break;
  }
}

Nginxでgeoモジュールを使ってメンテナンス中にIP制限をかける #nginx - Qiita 2018

http {
  include       /usr/local/etc/nginx/mime.types;
  default_type  application/octet-stream;

  geo $developer_ip {
    default no;
    127.0.0.1 yes;
    189.73.181.124 yes;
  }

  server {
    listen 2345;
    server_name localhost;
    root /var/www/codeplane/current/public;

    set $maintenance off;

    location / {
      if ($request_uri ~* "\.(html?|svg|ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$") {
        set $maintenance off;
        break;
      }

      if ($developer_ip = yes) {
        set $maintenance off;
      }

      if ($maintenance = on) {
        return 503;
      }
    }

    error_page 503  /503.html;
      location = /503.html {
      root   /var/www/codeplane/current/public;
    }
  }
}

https://nandovieira.com.br/deploy-de-funcionalidades-e-o-nginx 2012