Django获取客户端IP方法

使用django来获取用户访问的IP地址,如果用户是正常情况下

request.META['REMOTE_ADDR']

可以获得用户的IP地址。但是有些网站服务器会使用ngix等代理http,或者是该网站做了负载均衡,导致使用remote_addr抓取到的是1270.0.1,这时使用HTTP_X_FORWARDED_FOR才获得是用户的真实IP。推荐使用以下代码:

if request.META.has_key('HTTP_X_FORWARDED_FOR'):

ip =  request.META['HTTP_X_FORWARDED_FOR']

else:

ip = request.META['REMOTE_ADDR']

参考链接:http://m.blog.csdn.net/bravezhe/article/details/7374934

使用以上方法在服务器上出现添加的页面无法访问,用print(request.META['HTTP_X_FORWARDED_FOR']) 和 print(request.META['REMOTE_ADDR'])前者打印出客户端正常IP后者打印处127.0.0.1证明IP获取正常(网站服务器使用的是nginx),所以

if request.META.has_key('HTTP_X_FORWARDED_FOR'): 此处语法应该有错误

最后去掉该判断语句,网站正常访问。

推荐阅读更多精彩内容