Hosts綁定新思路之HTTP代理篇
前言
現(xiàn)狀
平時(shí)開(kāi)發(fā),測(cè)試,功能預(yù)演階段,為了能夠正常訪問(wèn)應(yīng)用,需要做H
用一張圖,來(lái)描述下目前我們的方案:
如果站在面向?qū)ο缶幊痰慕嵌?來(lái)思考這張圖,我們會(huì)發(fā)現(xiàn).
1. 利用客戶(hù)端本地Hosts綁定來(lái)實(shí)現(xiàn),并且客戶(hù)端數(shù)量不可控—利
2. Hosts綁定是非常不穩(wěn)定的—需求易變
這樣的設(shè)計(jì),違反了”封裝變化”的設(shè)計(jì)原則,故一旦有變動(dòng),維護(hù)
新方案思路
按照”封裝變化”的設(shè)計(jì)原則,我們就應(yīng)該把”域名綁定”這個(gè)易變
看上圖,我們會(huì)發(fā)現(xiàn),DNS的職責(zé)就是做域名解析的,并且DNS
于是第一反應(yīng),我們可以使用內(nèi)部域名解析服務(wù)器來(lái)綁定這些域名.
但是問(wèn)題又來(lái)了,DNS來(lái)做測(cè)試環(huán)境域名解析,太重量級(jí)了.同一
既然DNS上做文章不可行,又需要統(tǒng)一管理的地方,那么我們只能
同樣,我們利用一張圖,來(lái)描述下整體架構(gòu).
與上圖相對(duì),此圖多了一個(gè)”代理服務(wù)器”的概念,即Hosts綁
流程如下:
1. 客戶(hù)端瀏覽器設(shè)置代理服務(wù)器,將所有請(qǐng)求發(fā)送到代理服務(wù)器上
2. 代理服務(wù)器檢查本地Hosts綁定,如綁定則直接解析,反之進(jìn)入
3. 代理服務(wù)器通過(guò)內(nèi)部域名服務(wù)器解析域名
4. 代理服務(wù)器發(fā)送請(qǐng)求到測(cè)試服務(wù)器上,并且將響應(yīng)內(nèi)容返回給客戶(hù)端
具體嘗試性實(shí)施方案如下(在XX項(xiàng)目過(guò)程中有成功案例)
1. 利用squid搭建代理服務(wù)器 (代理地址: 10.20.131.207:3128)
備注:
Squid配置介紹見(jiàn)附錄I
2. 瀏覽器配置代理
全局代理: 代理服務(wù)器上,直接填寫(xiě) 10.20.131.207 3128
局部代理: 通過(guò)pac實(shí)現(xiàn),選擇”使用自動(dòng)配置腳本”,腳本格式內(nèi)容如下:
備注:
Pac腳本詳細(xì)介紹見(jiàn)附錄II
為了防止將配置工作帶給PD,銷(xiāo)售等,我們可以使用配置好的綠色
推薦一款:GreenBrowser: http://www.morequick.com/indexen.htm
IE具體配置,見(jiàn)下圖:
Firefox同樣支持代理和pac腳本
Chrome需要安裝proxy switchy插件來(lái)支持.
改進(jìn)方案思路
上述的方案中,有兩個(gè)比較大的缺陷
1. 代理服務(wù)器沒(méi)有多實(shí)例概念
代理服務(wù)器通過(guò)hosts綁定.hosts是全局性的,意味著一
2. 特性化需求不能滿(mǎn)足
綁定全在代理服務(wù)器上做了,客戶(hù)端本地個(gè)性化需求無(wú)法支持
所以,我理想中整體架構(gòu)是這樣的,見(jiàn)圖:
1. 優(yōu)先查看本地hosts文件
2. 代理服務(wù)器支持多實(shí)例部署,不同實(shí)例有不同的hosts綁定配置
目前具體實(shí)現(xiàn)方案,還在構(gòu)思中.歡迎大家提供實(shí)現(xiàn)方案思路.
附錄I
Squid權(quán)威指南(中文版): http://home.arcor.de/pangj/
附錄II
Pac介紹: http://en.wikipedia.org/wiki/
Pac函數(shù)介紹: http://findproxyforurl.com/
posted on 2011-05-23 19:41 stone2083 閱讀(2345) 評(píng)論(1) 編輯 收藏 所屬分類(lèi): python