ELB経由でアクセスされたNginxでIP制限したいっ!
2018年5月31日
巷ではEUのIPからのアクセスを拒否するのが流行ってるみたいです(それで本当に解決したとは思えません)が、よくあるサンプルだとWeb1台な環境であれば、直接のアクセスなので普通に動くと思いますが、ELB等のロードバランサーを経由してWebサーバーに到達した時に
http {
deny yyy.yyy.yyy.yyy;
}
って感じで拒否したいIPを書いても、denyの比較対象がロードバランサーのIP(ローカルIP)なので動きません。
解決策
http {
real_ip_header X-Forwarded-For;
set_real_ip_from xxx.xxx.xxx.xxx/xx;
deny yyy.yyy.yyy.yyy;
}
拒否する前に、real_ipを本来アクセスしてきたIPに書き換え。
xxxの部分は、ELBのVPCアドレスです。
これで、ELBでもALBでも、LB使ってるサービスでも拒否しまくれますね(ぇ