(34)odoo反代理中客户IP处理
* 前言
一般我们部署时会用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处理的更多相关文章
- 从HTTP请求中获取客户IP地址
/** * 从HTTP请求中获取客户IP地址 * * @param request http请求 * @return 客户IP地址 */ public s ...
- 反爬虫之搭建IP代理池
反爬虫之搭建IP代理池 听说你又被封 ip 了,你要学会伪装好自己,这次说说伪装你的头部.可惜加了header请求头,加了cookie 还是被限制爬取了.这时就得祭出IP代理池!!! 下面就是requ ...
- scrapy中使用 IP 代理
在 scrapy 中使用 ip 代理需要借助中间件的功能 首先在settings 中设置好中间件,中间件优先级数字越小越先被执行 , } 然后编写中间件,拦截请求设置代理 class ProxyMid ...
- (01-02) odoo8.0_Ubuntu14.04_nginx反代理设置
作者:陈伟明联系 : QQ 942923305 | 微信 toby942923305E-mail: cwm.win@hotmail.com============================== ...
- Nginx多进程高并发、低时延、高可靠机制在缓存(redis、memcache)twemproxy代理中的应用
1. 开发背景 现有开源缓存代理中间件有twemproxy.codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能. 由于twemp ...
- Nginx多进程高并发、低时延、高可靠机制在缓存代理中的应用
1. 开发背景 现有开源缓存代理中间件有twemproxy.codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能. 由于twemp ...
- Nginx多进程高并发、低时延、高可靠机制缓存代理中的应用
1. 开发背景 现有开源缓存代理中间件有twemproxy.codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能. 由于twemp ...
- 转载-lvs官方文档-LVS集群中的IP负载均衡技术
章文嵩(wensong@linux-vs.org) 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN ...
- LVS集群中的IP负载均衡技术
LVS集群中的IP负载均衡技术 章文嵩 (wensong@linux-vs.org) 转自LVS官方参考资料 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集 ...
随机推荐
- cmdb models数据库结构
from __future__ import unicode_literals from django.contrib.auth.models import User from django.db i ...
- Oracle在dos命令下导出导入
DOS下运行的命令,也可以加参数在SQL/PLUS环境下运行简单例子实现 单表备份(前提库的结构是一样的)导出:开始钮->运行->输入CMD->进入DOS界面EXP 用户名/密码@连 ...
- this的指向
在JS中,有三种需要注意的this:寻常的this/事件的this/ajax请求的this. 寻常的this 这种this的判断很简单,this是指向执行函数的对象.下面是事例说明: var name ...
- Leetcode: Largest BST Subtree
Given a binary tree, find the largest subtree which is a Binary Search Tree (BST), where largest mea ...
- Android -- 是时候来了解一波EventBus了
1,最早在项目中使用EventBus是在去年的时候,但自己一直没抽出时间来记录记录一下,今天就来简单的使用一下,先看一下EventBus的定义是什么 EventBus:是一个发布 / 订阅的事件总线. ...
- Web动画API教程2:AnimationPlayer和Timeline
本文转载: Web动画API教程2:AnimationPlayer和Timeline
- storyboard
一,代码动态改写 1,一般程序启动就自动执行 main.storyboard 也可以在AppDelegate改写 - (BOOL)application:(UIApplication *)applic ...
- z/OS上Dataset 的移动
最近的一个需求,需要把大批量的Dataset移到新的Storage Class,新的Volume中去,刚开始感觉非常头疼.仔细研究后发现这个事情其实很简单.确实符合别人所说,事情的在你真正开始努力之后 ...
- Qt报表控件NCReport教程:报表创建示例
NCReport是 一款10多年时间的老牌报表控件,最初是在2002年时作为qt3的应用程序的一个联合项目,后来就成为了一个独立的GPL项目.现在的NCReport 是一款轻量级.快速.多平台.简单易 ...
- Create Your Tab and LayerTabMenu In Katana
感谢 http://tool.lu/pyc/ 这个牛逼的网站能反编译pyc...他妈的Katana太他妈无耻了,竟然不让自定义加Node Tab Content....只能反编译他的东西了... 研究 ...