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; } }
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