ELB経由でない場合に、現在ページをみているユーザーのIPを取得する場合 下記の定義済み変数で取得することができます。

1
$_SERVER['REMOTE_ADDR'];

公式 見ながらvar_dump($_SERVER);すると、勉強になります。

■ELB経由の場合

ELBを設定している場合に、上記の方法で設定すると、 プロキシサーバのIPアドレス(ELBのIP)が格納されるため、 クライントのページを見ているユーザーのIPが取得出来ない。

その場合、以下でクライントのページを見ているユーザーのIPがセットされる。

1
$_SERVER['HTTP_X_FORWARDED_FOR'];

最後に、実装したサンプルをドン!

1
2
3
4
5
$value = $_SERVER['REMOTE_ADDR'];
// For ELB
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
   $value = $_SERVER['HTTP_X_FORWARDED_FOR'];
}