2016-05-03 1 views
3

私のpythonアプリケーションでは、ブラウザは特定の情報を取得するために私のサーバにリクエストを送信します。途中にロードバランサがある場合のブラウザのIPアドレスを追跡する方法

request.headers.get(「リモート-ADDR」)

しかし:私はこの呼び出しでその情報を取得することができる午前、要求がmade.Normallyあった場所から元のIPを追跡する必要がありますHaProxyのようなロードバランサの背後にアプリケーションを配備すると、与えられたIPはブラウザのものではなくロードバランサのIPになります。

ロードバランサの後ろにあるサーバーでブラウザのIPを取得するにはどうすればよいですか?

私の場合の別の問題は、ブラウザからサーバーへのTCP接続を、HAProxy経由で、httpを使用せずに使用していることです。

答えて

3

AWS ELBとApacheでこの問題が発生しました。ソリューションはmod_rpafで、X-Forwarded-Forヘッダーを読み取り、標準のipヘッダーに置き換えます。

haproxyがX-Forwarded-Forヘッダー(実際のクライアントIPを含む)を設定していることを確認する必要があります。 modrpafなどの技術を使って実際のIPを読むことができます。

+0

ありがとうございますが、これはTCP接続にはうまくいかず、ブラウザからCPortalへのリクエストを転送するためのhttpではないことになります –

+0

True、ModpafはApache用ですが、 "request.headers.get( 'X-Forwarded-For' )」。または、元のクライアントIPを通過するようにhaproxyを設定することもできます。 –

関連する問題