特定のIP Address以外は閲覧を制限(503 Pageを表示)するNginxのconf設定
Nginxの環境でサーバーメンテナンス中に「しばらくお待ちください。」のメッセージを表示する方法。
環境: CentOS 5.8, nginx 1.2.3
参考にしたのは下記Site.
maintenance.htmlを用意して、下記をnginx.confに追記する。
### Start - Show the maintenance page.
error_page 503 @maintenance;
location @maintenance {rewrite ^(.*)$ /maintenance.html break;}
set $flg "true";
if ($remote_addr = "127.0.0.1" ) {set $flg "false";}
if ($remote_addr ~ ^192\.168\. ) {set $flg "false";}
if ($flg = "true") {return 503;}
### End - Show the maintenance page.
これはIP Addressが「127.0.0.1」か「192.168.*」以外はmaintenance.htmlを表示する設定。
if文の書き方はOfficial Wikiを参考に。
conf全体は以下のようになった。
server {
listen 80;
server_name hoge.com;root /home/httpd/hoge/httpdocs;
index index.php index.html index.htm;
charset utf-8;location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }### Start - Show the maintenance page.
error_page 503 @maintenance;
location @maintenance {rewrite ^(.*)$ /maintenance.html break;}
set $flg "true";
if ($remote_addr = "127.0.0.1" ) {set $flg "false";}
if ($remote_addr ~ ^192\.168\. ) {set $flg "false";}
if ($flg = "true") {return 503;}
### End - Show the maintenance page.location / {
}location ~* \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
include fastcgi_params;
client_max_body_size 20M;
}location ~ /\. {
deny all;
access_log off;
log_not_found off;
}# if the file is not found, forwarded to index.php (permalinks)
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
}
< Related Posts >