ホームページ > バックエンド開発 > Python チュートリアル > リバース プロキシを使用する場合、Django で真のユーザー IP アドレスを取得する方法は?

リバース プロキシを使用する場合、Django で真のユーザー IP アドレスを取得する方法は?

Susan Sarandon
リリース: 2024-11-05 03:51:02
オリジナル
732 人が閲覧しました

How to Get the True User IP Address in Django When Using a Reverse Proxy?

Django でユーザーの IP アドレスを取得する方法

Django アプリケーションを開発する場合、ユーザーの IP アドレスを取得する必要が生じる場合があります。これは、ローカリゼーション、トラフィック分析、またはセキュリティ目的に役立ちます。

一般的なアプローチの 1 つは、request.META['REMOTE_ADDR'] 属性を使用することです。ただし、Django アプリケーションがリバース プロキシの背後にデプロイされている場合、REMOTE_ADDR ヘッダーにユーザーの実際の IP アドレスが含まれていない可能性があります。

この問題に対処するために、Django は get_client_ip ヘルパー関数を提供します。この関数は、クライアントの元の IP アドレスを示すためにリバース プロキシによって一般的に使用される HTTP_X_FORWARDED_FOR ヘッダーをチェックします。このヘッダーが存在する場合、関数はリストの最初の IP アドレスを返します。それ以外の場合は、REMOTE_ADDR ヘッダーに戻ります。

get_client_ip 関数の使用方法は次のとおりです。

<code class="python">def get_client_ip(request):
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]
    else:
        ip = request.META.get('REMOTE_ADDR')
    return ip</code>
ログイン後にコピー

get_client_ip 関数が正しく動作するように、リバース プロキシが正しく構成されていることを確認してください。たとえば、Apache の場合、mod_rpaf モジュールのインストールが必要になる場合があります。

get_client_ip 関数を実装したら、リクエスト オブジェクトを引数として渡すことでユーザーの IP アドレスを取得できます。

<code class="python">ip_address = get_client_ip(request)</code>
ログイン後にコピー

以上がリバース プロキシを使用する場合、Django で真のユーザー IP アドレスを取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート