背景
- GCPのLB配下で特定パス以下の場合のみアクセス元IPでアクセス制限したかった
- ELB同様、GCPのLBの経由の場合はIPがLBのものになってしまうので
xxx.xxx.xxx.xxx allow
は使えない - 調べたらif分でゴリッと実装してる場合が多かった
- もっといい方法合ったら知りたい
実装(nginx.conf)
# アクセス許可するアクセス元IPであれば$allowedに'allow'を代入。そうでなければ、deny。
map $http_x_forwarded_for $allowed {
default deny;
~\s*127.0.0.*$ allow; # 127.0.0.0/24 のアクセスを許可
}
location / {
略
}
# $allowedが'deny'の場合は403を返す
location /some_path/ {
if ( $allowed = "deny" ) {
return 403 ;
}
proxy_pass http://unicornapp;
}
参考
http://d.hatena.ne.jp/end0tknr/20150618/1434608411
https://gist.github.com/mosson/7008082
http://takeyuweb.hatenablog.com/entry/elb_ec2_nginx_ip