如何在nginx下只在Django中获取客户端IP地址?

时间:2011-08-17 14:20:41

标签: django nginx

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

fastcgi_param REMOTE_ADDR $ remote_addr;

fastcgi_param X_FORWADRD_FOR $ proxy_add_x_forwarded_for;

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

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

我如何单独获取客户端IP

2 个答案:

答案 0 :(得分:0)

目前我所做的是

ipaddress = request.META['X_FORWADRD_FOR']

ipaddress = ipaddress.split(",")

ip_address = ipaddress[0]

单独获取客户端

答案 1 :(得分:-1)

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