Hosts绑定新思路之HTTP代理篇

现状

平时开发,测试,功能预演阶段,为了能够正常访问应用,需要做Hosts绑定.随着应用数量的不断增多,绑定量也是急剧上升.例如最近工作平台三期项目,需要绑定的环境多达44个.一旦有变动,需要通知所有人员做本地Hosts的调整,维护成本那是相当地大.

 

用一张图,来描述下目前我们的方案:

 

如果站在面向对象编程的角度,来思考这张图,我们会发现.

1.        利用客户端本地Hosts绑定来实现,并且客户端数量不可控—利用客户端解决需求,但客户端维护不在可控范围内

2.        Hosts绑定是非常不稳定的—需求易变

 

这样的设计,违反了”封装变化”的设计原则,故一旦有变动,维护成本非常大.

 

新方案思路

按照”封装变化”的设计原则,我们就应该把”域名绑定”这个易变需求,进行统一管理.

看上图,我们会发现,DNS的职责就是做域名解析的,并且DNS管理比较可控.

于是第一反应,我们可以使用内部域名解析服务器来绑定这些域名.

但是问题又来了,DNS来做测试环境域名解析,太重量级了.同一个域名,对应测试服务器IP有多个,绑定哪一个好呢?并且域名对应IP不断变化,IT DNS负责人不被我们累死啊? 

 

既然DNS上做文章不可行,又需要统一管理的地方,那么我们只能再抽象出一个新的概念来.

同样,我们利用一张图,来描述下整体架构.

 

与上图相对,此图多了一个”代理服务器”的概念,即Hosts绑定动作在此概念上完成.

流程如下:

1.        客户端浏览器设置代理服务器,将所有请求发送到代理服务器上

2.        代理服务器检查本地Hosts绑定,如绑定则直接解析,反之进入流程3

3.        代理服务器通过内部域名服务器解析域名

4.        代理服务器发送请求到测试服务器上,并且将响应内容返回给客户端

 

具体尝试性实施方案如下(在XX项目过程中有成功案例)

1.        利用squid搭建代理服务器 (代理地址: 10.20.131.207:3128 )

备注:

Squid配置介绍见附录I

 

2.        浏览器配置代理

全局代理: 代理服务器上,直接填写 10.20.131.207 3128

局部代理: 通过pac实现,选择”使用自动配置脚本”,脚本格式内容如下:

 

备注:

Pac脚本详细介绍见附录II

为了防止将配置工作带给PD,销售等,我们可以使用配置好的绿色浏览器提供直接使用.

推荐一款:GreenBrowser: http://www.morequick.com/indexen.htm

 

IE具体配置,见下图:

 

Firefox同样支持代理和pac脚本

Chrome需要安装proxy switchy插件来支持.

 

改进方案思路

上述的方案中,有两个比较大的缺陷

1.        代理服务器没有多实例概念

代理服务器通过hosts绑定.hosts是全局性的,意味着一台代理服务器只能服务一组需求.而事实上,我们不同的项目需要的绑定都是不一样的.

2.        特性化需求不能满足

绑定全在代理服务器上做了,客户端本地个性化需求无法支持

 

所以,我理想中整体架构是这样的,见图:

1.        优先查看本地hosts文件

2.        代理服务器支持多实例部署,不同实例有不同的hosts绑定配置.

 

目前具体实现方案,还在构思中.欢迎大家提供实现方案思路.

 

附录 I

Squid 权威指南( 中文版):  http://home.arcor.de/pangj/squid/chap01.html

附录 II

Pac介绍:               http://en.wikipedia.org/wiki/Proxy_auto-config

Pac函数介绍:        http://findproxyforurl.com/pac_functions_explained.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值