博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django获取客户端真实IP
阅读量:6940 次
发布时间:2019-06-27

本文共 807 字,大约阅读时间需要 2 分钟。

hot3.png

  1settings.py中 添加中间件:

'django.middleware.http.SetRemoteAddrFromForwardedFor'

如何没有 自己写这个中间件:

classSetRemoteAddrFromForwardedFor(object):defprocess_request(self, request):   try:       real_ip=request.META['HTTP_X_FORWARDED_FOR']   exceptKeyError:       pass   else:       # HTTP_X_FORWARDED_FOR can be a comma-separated list of IPs.       # Take just the first one.       real_ip=real_ip.split(",")[0]       request.META['REMOTE_ADDR']=real_ip

引入中间件:

‘your_project.http.SetRemoteAddrFromForwardedFor’,

原因:

高流量的站点通常需要将Django部署在负载平衡proxy(参见第20章)之后。这种方式将带来一些复杂性,其一就是每个request中的远程IP地址(request.META["REMOTE_IP"])将指向该负载平衡proxy,而不是发起这个request的实际IP。负载平衡proxy处理这个问题的方法在特殊的 X-Forwarded-For 中设置实际发起请求的IP。因此,需要一个中间件来确保运行在proxy之后的站点也能在request.META['REMOTE_ADDR']中得到正确的IP。

 

转载于:https://my.oschina.net/jamescasta/blog/1527335

你可能感兴趣的文章
Nginx的安装和配置
查看>>
mysql 5.6.27 rpm 安装
查看>>
Android Studio 创建项目常见问题
查看>>
在主机用ssh连接vitualbox虚拟机 nat端口转发 ssh连接
查看>>
Google Map For Android
查看>>
【转载】Hibernate3注解
查看>>
IN和EXISTS的详解
查看>>
在Mac上安装EA
查看>>
kmalloc详解
查看>>
Jquery 实现 微博,消息向上滚动
查看>>
Redis(一)——NoSQL入门和概述
查看>>
我为什么不看好 PHP 发展 ?
查看>>
使用jquery jcrop插件进行图片的截取与保存
查看>>
Spring Boot学习笔记-MVC
查看>>
Java身份证号码验证
查看>>
利用docker搭建php7和nginx运行环境的全过程
查看>>
C语言中的const和指针
查看>>
SpringMVC3.0.5+Spring3.0.5+MyBatis3.0.4全注解实例详解(一)
查看>>
[有效]Hibernate之deleted object would be re-saved by cascade 异常的解决
查看>>
MongoDB 更新文档
查看>>