【问题标题】:How to get client IP address only in Django under nginx?如何仅在 nginx 下的 Django 中获取客户端 IP 地址?
【发布时间】:2011-08-19 01:24:28
【问题描述】:

您好,我正在尝试在 django 中获取客户端 IP 地址。我的网络服务器是 Nginx。所以我在我的 nginx conf 中这样做

fastcgi_param REMOTE_ADDR $remote_addr;

fastcgi_param X_FORWADRD_FOR $proxy_add_x_forwarded_for;

问题是我在负载均衡器下有 4 台服务器,当我使用域调用站点时,我在使用此 (client_ip = request.META['REMOTE_ADDR']) 时获取服务器的 ip。但是当我使用 ip 地址调用站点时,我只得到客户端 ip

当我使用这个 (client_ip = request.META['X_FORWARDED_FOR']) 我得到客户端 ip 和服务器的 ip

我如何单独获取客户端 ip

【问题讨论】:

    标签: django nginx


    【解决方案1】:

    现在我所做的是

    ipaddress = request.META['X_FORWADRD_FOR']
    
    ipaddress = ipaddress.split(",")
    
    ip_address = ipaddress[0]
    

    单独获取客户端ip

    【讨论】:

      【解决方案2】:

      您可以重新整合the SetRemoteAddrFromForwardedFor middleware that was removed in Django 1.1。这会将 request.META["REMOTE_ADDR"] 动态重置为客户端 IP 地址。

      【讨论】:

        猜你喜欢
        • 2012-03-14
        • 2012-02-16
        • 2015-02-26
        • 2015-12-20
        • 2016-03-29
        • 2019-01-14
        • 2021-10-22
        相关资源
        最近更新 更多