No.127
【AWS】【ELB】【Apache】ELB下のインスタンスでのIPアドレス制限
ELB配下のインスタンスでIPアドレス制限をしたい。
普通のサーバでに.htaccess
でIPアドレス制限をするのは簡単。
order deny,allow
deny from all
allow from IPアドレス
ただ、ELB配下のインスタンスの場合はこれではNG。理由は各インスタンスへのアクセスはELBから行われるため、インスタンス的にはどんな環境からのアクセスでもELBからのアクセスと見なしてしまうのだ。
というわけで、対応方法としてはロードバランサーが設定する環境変数を利用することになる。X-Forwarded-For
という変数に転送前のアクセス元IPアドレスを設定してくれるのだ。
SetEnvIf X-Forwarded-For "IPアドレス" allowedip
order deny,allow
deny from all
allow from env=allowedip
IPアドレスを記載するときには注意点が幾つかある。
- ピリオドはエスケープすること
- ネットワークアドレスなどの記述は行えないこと
- 複数記載する場合はパイプで繋ぐこと
複数書く場合は下記のようになる。
SetEnvIf X-Forwarded-For "111\.222\.333\.444|555\.666\.777\.888" allowedip