使用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'): 此处语法应该有错误
最后去掉该判断语句,网站正常访问。
网友评论