django获取用户的真实ip

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

request.META['REMOTE_ADDR']

如果使用了nginx或者负载均衡的,可以使用HTTP_X_FORWARDED_FOR,当然对方需要插入这个头。

if request.META.has_key('HTTP_X_FORWARDED_FOR'):  
    ip =  request.META['HTTP_X_FORWARDED_FOR']  
else:  
    ip = request.META['REMOTE_ADDR']

也可以通过中间件的形式直接加入到django的项目中统一控制。

参考github:https://github.com/un33k/django-ipware

或:https://pypi.python.org/pypi/django-xff/1.0.3

nginx的日志配置,加上remote_addr就行。

log_format main	'$remote_addr $host $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                   	'"$http_user_agent" "$http_x_forwarded_for" "$upstream_response_time" "$upstream_addr"
                   	"$upstream_status" $request_time';

Written by

说点什么

欢迎讨论

avatar

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  Subscribe  
提醒
haha
游客

测试