* 前言
    一般我们部署时会用nginx做为前端处理,有时负载时还会用到其它web服务反代理
    这里只给出nginx处理方法,其它参考处理
   
* nginx上的客户IP传递   
    在server模块中加入
    server{
         ...
       location /{
         ...
            proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         ...
       }
       ...   
    }
    针对X-Real-IP 其实就是头部包里面的参数 key ,对应的值$remote_addr 这个就是ip
    对于 X-Forwarded-For 解决多层反代理 ip传递,它是一个数组,若一层反代理,第一个
    键值就是客户ip ,这和 X-Real-IP 一样的,若两层,则第一个是客户ip 第二数是前一台
    服务器的ip
    我这里只用了nginx一层代理,就只用了 X-Real-IP
   
* odoo 上面得到客户IP

from openerp.http import request
  client_ip=request.httprequest.headers.get('X-Real-Ip',request.httprequest.remote_addr)
 
  request是 openerp/http.py 中的对象变量
  request.httprequest 这样就得到  werkzeug Request 对象的封装对象 a wrapped werkzeug Request object
  request.httprequest.headers 得到头部包的数据
  可以用 set 方法 如 headers.set('Access-Control-Allow-Methods', 'POST') 设置Access-Control-Allow-Methods传值 为 POST
  这里你想在头部加什么键,就在这里加了
  我们这里用到是 headers.get('keyname') 这里 keyname 是用了 'X-Real-Ip'
  有时间可以打印request.httprequest.headers 这是一个头部包列表,可看到有哪些键可用
  对于后面那个 request.httprequest.remote_addr ,是默认值正常是传到 odoo服务时的ip 极大可能为127.0.0.1
 
* 对多层代理就用  X-Forwarded-For
  from openerp.http import request
 
  if 'X-Forwarded-For' in request.httprequest.headers:
      client_ip = request.httprequest.headers.get("X-Forwarded-For")[0] or request.httprequest.remote_addr
     
* 扩展
    还可以用GeoIP来根据IP得到很多信息

(34)odoo反代理中客户IP处理的更多相关文章

  1. 从HTTP请求中获取客户IP地址

    /**     * 从HTTP请求中获取客户IP地址     *     * @param request http请求     * @return 客户IP地址     */    public s ...

  2. 反爬虫之搭建IP代理池

    反爬虫之搭建IP代理池 听说你又被封 ip 了,你要学会伪装好自己,这次说说伪装你的头部.可惜加了header请求头,加了cookie 还是被限制爬取了.这时就得祭出IP代理池!!! 下面就是requ ...

  3. scrapy中使用 IP 代理

    在 scrapy 中使用 ip 代理需要借助中间件的功能 首先在settings 中设置好中间件,中间件优先级数字越小越先被执行 , } 然后编写中间件,拦截请求设置代理 class ProxyMid ...

  4. (01-02) odoo8.0_Ubuntu14.04_nginx反代理设置

    作者:陈伟明联系 :  QQ 942923305 | 微信 toby942923305E-mail: cwm.win@hotmail.com============================== ...

  5. Nginx多进程高并发、低时延、高可靠机制在缓存(redis、memcache)twemproxy代理中的应用

    1. 开发背景 现有开源缓存代理中间件有twemproxy.codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能. 由于twemp ...

  6. Nginx多进程高并发、低时延、高可靠机制在缓存代理中的应用

    1. 开发背景 现有开源缓存代理中间件有twemproxy.codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能. 由于twemp ...

  7. Nginx多进程高并发、低时延、高可靠机制缓存代理中的应用

    1. 开发背景 现有开源缓存代理中间件有twemproxy.codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能. 由于twemp ...

  8. 转载-lvs官方文档-LVS集群中的IP负载均衡技术

    章文嵩(wensong@linux-vs.org) 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN ...

  9. LVS集群中的IP负载均衡技术

    LVS集群中的IP负载均衡技术 章文嵩 (wensong@linux-vs.org) 转自LVS官方参考资料 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集 ...

随机推荐

  1. 前端开发利器-Brackets IDE

    是什么? http://brackets.io/ A modern, open source text editor that understands web design. 现代, 开源的文本编辑器 ...

  2. mysqldump database table

    一)在同一个数据库服务器上面进行数据表间的数据导入导出: 1. 如果表tb1和tb2的结构是完全一样的,则使用以下的命令就可以将表tb1中的数据导入到表tb2中: insert into db2.tb ...

  3. PRML读书笔记——Introduction

    1.1. Example: Polynomial Curve Fitting 1. Movitate a number of concepts: (1) linear models: Function ...

  4. Leetcode: Pacific Atlantic Water Flow

    Given an m x n matrix of non-negative integers representing the height of each unit cell in a contin ...

  5. 笔记本自带 WiFi 功能

    在寝室,动网速基本崩溃.平时打电话什么的都得到阳台,有时候还听不清声音.对于学校的环境,我不说什么了. 笔记本可以上网,那就要满足手机等移动电子设备上网的上网需求. WiFi 热点就显得尤为重要了. ...

  6. [原创]java WEB学习笔记100:Spring学习---Spring Bean配置:SpEL详细介绍及代码演示

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. axure rp pro 7.0(页面原型工具)

    axure rp pro 7.0 下载连接:地址

  8. jqgrid如何在一个页面点击按钮后,传递参数到新页面

    利用 Content/Scripts/dw-framework.js 中的AddTableMenu属性 <div class="Task" style="backg ...

  9. eclipse远程debug

    由于一般比较正规项目,都会有好几个版本,有时候在测试版本的时候,一切都好好的,然后提交到其他版本之后会有各种各样的问题,这个时候如果不能快速准确的定位到问题,那么我们就需要用 eclipse远程deb ...

  10. sklearn 组合分类器

    组合分类器: 组合分类器有4种方法: (1)通过处理训练数据集.如baging  boosting (2)通过处理输入特征.如 Random forest (3)通过处理类标号.error_corre ...