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

相关推荐
vb20081119 分钟前
基于AMQP协议模拟MQTT的发布 / 订阅主题功能
python·rabbitmq
ZhuNian的学习乐园1 小时前
LLM对齐核心:RLHF 从基础到实践全解析
人工智能·python·算法
编程饭碗1 小时前
【Java 类的完整组成】
java·开发语言·python
DLite1 小时前
Python静态类型设计:语法割裂的槽点
开发语言·python
2501_921649491 小时前
如何获取外汇实时数据:全球货币行情对接指南
后端·python·websocket·金融·区块链
时光Autistic2 小时前
【环境配置】安装LaTeX并配置到PyCharm使用
ide·python·pycharm·latex
岁岁的O泡奶2 小时前
NSSCTF_crypto_[LitCTF 2024]common_primes
开发语言·python·算法
韩师傅2 小时前
从随叫随到到规范配送:现代物流系统与 REST API 的登场
后端·python·全栈
阿拉丁的梦2 小时前
五种翻译--mo字典翻译任何blender插件的插件
python·blender
C_心欲无痕2 小时前
网络相关 - TCP-IP协议和三次握手
网络·网络协议·tcp/ip