假设django应用是用nginx+fastcgi方式部署的,获取用户ip分两步

  1. 修改nginx配置文件,在location中加入一条fastcgi_param REMOTE_ADDR $remote_addr;

  2. 在代码中,就可以直接使用 request.META.get('REMOTE_ADDR','1.1.1.1')

这种方法是自娱自乐的小网站,大型门户,用户和网站之间的链路可能非常复杂:

  • 用户通过3G上网,走的是ISP的网关
  • 门户的web服务器内部也有各种“网关”,比如电信网通之间的代理,负载均衡等等

这种情况要获取用户IP就只能通过 透明代理协议,从 HTTPXFORWARDEDFOR 字段里面提取,但HTTPXFORWARDEDFOR是http header的一个字段,完全可以伪造,所以这是团浆糊,没有办法完全精准的

本文地址: http://lutaf.com/132.htm 鲁塔弗原创文章,欢迎转载,请附带原文链接