nginx.conf周りについて調べてみた
nginx.confについて調べてみた
今更な記事ですが、お付き合いください。
とある案件において、AWS WAF & Shiledを使うかnginxでIP制限をするかになった話です。
WAF & Shiledは正規表現が使えず、要望は上がっているようですが、まだまだ対応は入らないようです。
その点、nginxは正規表現やifなどで簡易的な条件によるアクセス制限が設けられます。
今回は案件において、nginxで解決することにしました。
調べた内容
ALB + nginxという構成で、特定のパスをIP制限したい、という要望でしたので以下のような形でIP制限を設けました
confのserverセクション内で以下のようにかけばOKでした。
location /URI {
set $allowed "";
if ($http_x_forwarded_for = AAA.BBB.CCC.DDD) {
set $allowed "yes";
}
if ($allowed != "yes") {
return 403;
}
}
$allowedにyesが入ればページが見ることができ、空であれば403を返す形ですね。
変数が使えるところに、なるほどなーと思ってます。
あとはこの記述が結構好きです。
location /URI1/ {
allow A.B.C.D;
allow AA.BB.CC.DD;
allow AAA.BBB.CCC.DDD;
deny all;
}
location /URI2/ {
allow A.B.C.D;
allow AA.BB.CC.DD;
allow AAAA.BBBB.CCCC.DDDD;
deny all;
}
この形はnginxでURIのアクセス拒否するのにスゴーーーク便利です。
AWSのセキュリティグループでアクセスできるIPは絞ってますが、お客様毎にこちらはアクセスできるけど、あちらはアクセスできないようにする、みたいなことがすごく簡単にできます。
なので、スゴーーーーク便利なわけです。
まあapacheでもできるんですけど、nginxの方がわかりやすいんですよね。
個人的な一意見ですけれども。。。