uiuifree.com

- サイト制作のノウハウと最適化を目指して-

2020.1.19【PHP】AWSのELBを挟んだ場合、REMOTE_ADDRで正しいIPが取得できない

【PHP】AWSのELBを挟んだ場合、REMOTE_ADDRで正しいIPが取得できない
【PHP】AWSのELBを挟んだ場合、REMOTE_ADDRで正しいIPが取得できない

PHP開発で管理画面などのアクセスを社内のにみ制限をかけるため、社内IP以外弾くようなロジックなどを作る際にハマりました。

PHPでIPアドレスを取得するには通常以下のように記述します。

$_SERVER['REMOTE_ADDR']

しかしAWSのELB(ロードバランサー)を挟んだ場合は$_SERVER['REMOTE_ADDR']に設定される値がELBのIPアドレスになってしまします。

ELBのIPアドレスを取得したい場合は以下のようにすれば取得できます。

$_SERVER['HTTP_X_FORWARDED_FOR']

ELBを通さない場合エラーになってしまうので、以下のようにすればELB環境でもテスト環境でも動作するのでオススメです。

$_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '';

最後まで読んでいただきありがとうございました。

PROFILE

このサイトを運営してるuiuifreeです。
渋谷のベンチャー企業で2年ほど新規事業を担当した後にフリーランスエンジニアにキャリア転換。
求人サイトの開発が多くエンジニア/飲食店/看護師/保育士などの分野でサイトを運営しています。

アウトプット中の技術

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)