使用反向代理時如何在 Django 中取得真實使用者 IP 位址?

Susan Sarandon
發布: 2024-11-05 03:51:02
原創
654 人瀏覽過

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

如何在Django 中擷取使用者IP 位址

在開發Django 應用程式時,您可能會遇到需要取得使用者IP 位址的情況。這對於本地化、流量分析或安全目的很有用。

常見的方法是使用 request.META['REMOTE_ADDR'] 屬性。但是,如果您的 Django 應用程式部署在反向代理程式後面,則 REMOTE_ADDR 標頭可能不包含使用者的真實 IP 位址。

為了解決這個問題,Django 提供了 get_client_ip 輔助函數。此函數檢查 HTTP_X_FORWARDED_FOR 標頭,反向代理通常使用該標頭來指示客戶端的原始 IP 位址。如果存在此標頭,函數將傳回清單中的第一個 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!