背景
一个线上项目要求记录用户真实IP地址,项目使用Django REST 后端(django 2.2.X) 前端使用ant design pro v3
前端配置
前端通过nginx ,需要修改nginx代理配置,
location /pre {
proxy_pass 代理地址;
proxy_set_header X-Real-IP $remote_addr;
# 添加下行
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
如使用https,照例添加
Django端
在view中如下操作
def post(self, request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
# 判断是否使用代理,这里使用ant design pro 都会使用,未使用获取地址方法else中
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
return ...