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使ってるサービスでも拒否しまくれますね(ぇ