AWSのELB-EC2で、PHPでアクセス元IPアドレスを取得する

EC2のみを利用していた場合は、PHPでIPアドレスを取得する場合は、$_SERVER[‘REMOTE_ADDR’]で問題ないです。
ですが、ELB-EC2の場合はそうはいきません。

ELB-EC2の場合のIPアドレス

ELB-EC2の場合は、EC2へのアクセスはELB(ロードバランサー)を通すことになるので、$_SERVER[‘REMOTE_ADDR’]で取得するとELBのIPアドレスになります。
そうなってしまうと、誰がアクセスしても同じIPアドレスになってしまいます。

ELB ー EC2
∟ EC2
みたいな構成ですね。

対処法は以下のコードで補います。

$_SERVER[‘HTTP_X_FORWARDED_FOR’]は、複数のサーバーを経由した場合、カンマ区切りで複数のIPアドレスが格納されます。
$_SERVER[‘HTTP_X_FORWARDED_FOR’]で、クライアントのIPアドレスとして取得する事が可能です。

あわせて読みたい

コメントを残す

Translate »
%d人のブロガーが「いいね」をつけました。