特定のIP Address以外は閲覧を制限(503 Pageを表示)するNginxのconf設定

nginx_maintenance_messageNginxの環境でサーバーメンテナンス中に「しばらくお待ちください。」のメッセージを表示する方法。

環境: 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 >