获取代理函数
python
def get_ip(request):
# 判断是否使用代理
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
# 使用代理获取真实的ip
ip = x_forwarded_for.split(',')[0]
else:
# 未使用代理获取IP
ip = request.META.get('REMOTE_ADDR')
return HttpResponse('{"origin": "%s"}' % ip)
生产环境配置NGINX
bash
# nginx配置
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
在使用NGINX做负载均衡的生产环境中如果不配置NGINX,那么 request.META.get('REMOTE_ADDR') 获取到的是NGINX负载均衡proxy_pass 127.0.0.1 IP,而不是实际用户IP