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

相关推荐
飞Link14 分钟前
LangChain 核心链式架构演进史:从顺序链到企业级路由兜底实战
python·架构·langchain
啥咕啦呛19 分钟前
java打卡学习3:ArrayList扩容机制
java·python·学习
编程之升级打怪21 分钟前
用排他锁来实现Python语言的变量值更新
开发语言·python
打乒乓球只会抽23 分钟前
【无标题】
python
路小雨~31 分钟前
Django 学习笔记:从入门到项目开发的完整梳理
笔记·python·学习·django
Yana.nice38 分钟前
Ansible 常用模块
网络·python·ansible
QQsuccess43 分钟前
人工智能(AI)全体系学习——系列三
人工智能·python·深度学习·学习
老师好,我是刘同学1 小时前
Python执行系统命令的最佳实践
python
郝学胜-神的一滴1 小时前
深入解析:生成器在UserList中的应用与Python可迭代对象实现原理
开发语言·python·程序人生·算法
李昊哲小课1 小时前
aiomysql 完整实战教程
python·mysql·pymysql·aiomysql