nginxの設定で詰まったのでメモ。
特定IPのみサイトアクセスを許可し、それ以外のIPには許可しない設定をここでは行う。
ELBを利用していない場合
remote_addrで接続元IPが取得できるので、それで判定する。
書き方例は以下
  ### 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 ($remote_addr = "111.111.111.111"   ) {set $flg "false";}
   if ($request_uri ~ .*\.(jpg|txt|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO)){set $flg "false";}
   if ($flg = "true") {return 503;}
  ###  End  - Show the maintenance page.
ELBを利用している場合
ELBを利用している場合は、
remote_addrはELBのIPが返ってくる。
http_x_forwarded_forが実際の接続元IPとなることに注意する。
書き方例は以下
  ### 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 ($http_x_forwarded_for = "111.111.111.111"   ) {set $flg "false";}
   if ($request_uri ~ .*\.(jpg|txt|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO)){set $flg "false";}
   if ($flg = "true") {return 503;}
  ###  End  - Show the maintenance page.