Django 获取用户IP

获取代理函数

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

相关推荐
Dontla1 天前
用pip install -e .开发Python包时,Python项目目录结构(项目结构)(可编辑安装editable install)
python·pip
Thomas.Sir1 天前
第三章:Python3 之 字符串
开发语言·python·字符串·string
威联通网络存储1 天前
告别掉帧与素材损毁:威联通 QuTS hero 如何重塑影视后期协同工作流
前端·网络·人工智能·python
Dxy12393102161 天前
Python 根据列表中某字段排序:从基础到进阶
开发语言·windows·python
splage1 天前
Java进阶——IO 流
java·开发语言·python
cliffordl1 天前
设计模式(python)
python·设计模式
always_TT1 天前
从Python_Java转学C语言需要注意什么?
java·c语言·python
2301_793804691 天前
定时任务专家:Python Schedule库使用指南
jvm·数据库·python
穿越世纪的风尘1 天前
【问题解决】No module named ‘_sqlite3‘
python·centos