ELBを使ってるnginxでIPでアクセス制限をかける方法

ELBは、アクセス制限をかけれず、Webサーバー側でアクセス制限をかけないとダメ。

それで、ちょっと強引だけどnginxでX_FORWARD_FORの値でアクセス制限をかける方法。

set $valid_access 'false';
if ($http_x_forwarded_for = '') { # From ELB
    set $valid_access 'true';
}
if ($http_x_forwarded_for = 'xxx.xxx.xxx.xxx') { # From me
    set $valid_access 'true';
}
if ($valid_access != 'true') {
    return 401;
}

最初はELBからのヘルスチェックを通す設定。

次は、IPでの許可。列挙可能。
許可しないときは、401コードを返す。

nginxのifでは、else if、ifのネスト、条件のand/or結合ができないらしいので、上記の書き方に。

これをserverの中に書く。

合ってるか不安・・・
もっと良いやり方は無いのかな・・・