2

私はAmazon AWS Elastic Load Balancerを使用するように切り替えましたが、私はクライアントのIPアドレスを提供していた$_SERVER['REMOTE_ADDR']のプライベートIPアドレスを取得しています。

クライアントのIPアドレスを今すぐ取得するにはどうすればよいですか?

+2

Load BalancerがクライアントのIPアドレスを持つヘッダーを設定しない場合、クライアントのIPアドレスを取得できません。あなたは '$ _SERVER'スーパーグローバルを見て、そのようなヘッダがあるかどうかを調べることができます(例えば、' HTTP_X_FORWARDED_FOR'と呼ばれる)。 –

+1

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/x-forwarded-headers.html –

+0

Apache、nginx、またはその他?それぞれには、X-Forwarded-Forアドレスを取得して使用する方法があります。 – ceejayoz

答えて

4

お客様のWebサーバーは、Amazon ELBからHTTPリクエストを受信します。したがって、リモートアドレスは常にELBのIPアドレスの1つになります。 ELBの背後にあるリモートホストのアドレスが必要な場合は、HTTPヘッダー "X-Forwarded-For"から取得します。

+0

X-Forwarded-Forはこれを返す: "192.155.96.40、54.240.144.13" - なぜ2つのアドレスを返すのか、それは何ですか? –

+0

はい、おそらく最初のアドレスが必要です。 http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/x-forwarded-headers.htmlで説明されているように、ELBは複数のアドレスを返すことができます。 要求が複数のプロキシを経由する場合は、clientIPAddress X-Forwarded-For要求ヘッダーの後には、ロードバランサに到達する前に要求が通過する各プロキシのIPアドレスが続きます。したがって、一番右のIPアドレスは直近のプロキシのIPアドレスであり、一番左のIPアドレスは元のクライアントのIPアドレスです。 –

+0

本当のことだけど、私は一番右のものを信頼するつもりだと思う。私は本当にクライアント側から何も信頼していません.... –

関連する問題