五大開源Web代理服務(wù)器的橫向點(diǎn)評(píng)
Web 代理軟件轉(zhuǎn)發(fā) HTTP 請(qǐng)求時(shí)并不會(huì)改變數(shù)據(jù)流量。它們可以配置成透明代理,而無需客戶端配置。它們還可以作為反向代理放在網(wǎng)站的前端;這樣緩存服務(wù)器可以為一臺(tái)或多臺(tái) web 服務(wù)器提供無限量的用戶服務(wù)。
網(wǎng)站代理功能多樣,有著寬泛的用途:從緩存頁面、DNS 和其他查詢,到加速 web 服務(wù)器響應(yīng)、降低帶寬消耗。代理軟件廣泛用于大型高訪問量的網(wǎng)站,比如紐約時(shí)報(bào)、衛(wèi)報(bào), 以及社交媒體網(wǎng)站如 Twitter、Facebook 和 Wikipedia。
頁面緩存已經(jīng)成為優(yōu)化單位時(shí)間內(nèi)所能吞吐的數(shù)據(jù)量的至關(guān)重要的機(jī)制。好的 Web 緩存還能降低延遲,盡可能快地響應(yīng)頁面,讓終端用戶不至于因等待內(nèi)容的時(shí)間過久而失去耐心。它們還能將頻繁訪問的內(nèi)容緩存起來以節(jié)省帶寬。如果你需要降低服務(wù)器負(fù)載并改善網(wǎng)站內(nèi)容響應(yīng)速度,那緩存軟件能帶來的好處就絕對(duì)值得探索一番。
為深入探查 Linux 下可用的相關(guān)軟件的質(zhì)量,我列出了下邊5個(gè)優(yōu)秀的開源 web 代理工具。它們中有些功能完備強(qiáng)大,也有幾個(gè)只需很低的資源就能運(yùn)行。
1.Squid
Squid 是一個(gè)高性能、開源的代理緩存服務(wù)器和 Web 緩存進(jìn)程,支持 FTP、Internet Gopher、HTTPS 和 SSL 等多種協(xié)議。它通過一個(gè)非阻塞的、I/O 事件驅(qū)動(dòng)的單一進(jìn)程處理所有的 IPV4 或 IPV6 協(xié)議請(qǐng)求。
Squid 由一個(gè)主服務(wù)程序 squid,和 DNS 查詢程序 dnsserver,另外還有一些可選的請(qǐng)求重寫、執(zhí)行認(rèn)證程序組件,及一些管理和客戶端工具構(gòu)成。
Squid 提供了豐富的訪問控制、認(rèn)證和日志環(huán)境, 用于開發(fā) web 代理和內(nèi)容服務(wù)網(wǎng)站應(yīng)用。
其特性包括:
◆Web 代理
◆通過緩存來降低訪問時(shí)間和帶寬使用
◆將元數(shù)據(jù)和訪問特別頻繁的對(duì)象緩存到內(nèi)存中
◆緩存 DNS 查詢
◆支持非阻塞的 DNS 查詢
◆實(shí)現(xiàn)了失敗請(qǐng)求的未果緩存
◆Squid 緩存可架設(shè)為層次結(jié)構(gòu),或網(wǎng)狀結(jié)構(gòu)以節(jié)省額外的帶寬
◆通過廣泛的訪問控制來執(zhí)行網(wǎng)站訪問策略
◆隱匿請(qǐng)求,如禁用或修改客戶端 HTTP 請(qǐng)求頭特定屬性
◆反向代理
◆媒體范圍media-range限制
支持 SSL
◆支持 IPv6
◆錯(cuò)誤頁面的本地化 - Squid 可以根據(jù)訪問者的語言選項(xiàng)對(duì)每個(gè)請(qǐng)求展示本地化的錯(cuò)誤頁面
◆連接固定Connection Pinning (用于 NTLM Auth Passthrough) - 一種允許 Web 服務(wù)器通過 Web 代理使用Microsoft NTLM 安全認(rèn)證替代 HTTP 標(biāo)準(zhǔn)認(rèn)證的方案
◆支持服務(wù)質(zhì)量 QoS, Quality of Service流
◆選擇一個(gè) TOS/Diffserv 值來標(biāo)記本地命中
◆選擇一個(gè) TOS/Diffserv 值來標(biāo)記對(duì)端命中
◆選擇性地僅標(biāo)記同級(jí)或上級(jí)請(qǐng)求
◆允許任意發(fā)往客戶端的 HTTP 響應(yīng)保持由遠(yuǎn)程服務(wù)器處響應(yīng)的 TOS 值
◆對(duì)收到的遠(yuǎn)程服務(wù)器的 TOS 值,在復(fù)制之前對(duì)指定位進(jìn)行掩碼操作,再發(fā)送到客戶端
◆SSL Bump (用于 HTTPS 過濾和適配) - Squid-in-the-middle,在 CONNECT 方式的 SSL 隧道中,用配置化的客戶端和服務(wù)器端證書,對(duì)流量進(jìn)行解密和加密
◆支持適配模塊
◆ICAP 旁路和重試增強(qiáng) - 通過完全的旁路和動(dòng)態(tài)鏈?zhǔn)铰酚蓴U(kuò)展 ICAP,來處理多多個(gè)適應(yīng)性服務(wù)。
◆支持 ICY 流式協(xié)議 - 俗稱 SHOUTcast 多媒體流
◆動(dòng)態(tài) SSL 證書生成
支持 ICAP 協(xié)議 (Internet Content Adaptation Protocol)
◆完整的請(qǐng)求日志記錄
◆匿名連接
◆網(wǎng)站:www.squid-cache.org
◆開發(fā):美國(guó)國(guó)家應(yīng)用網(wǎng)絡(luò)研究實(shí)驗(yàn)室(NLANR)和網(wǎng)絡(luò)志愿者
◆授權(quán):GNU GPL v2
◆版本號(hào):4.0.1
2.Privoxy
Privoxy (Privacy Enhancing Proxy) 是一個(gè)非緩存類 Web 代理軟件,它自帶的高級(jí)過濾功能可以用來增強(qiáng)隱私保護(hù)、修改頁面內(nèi)容和 HTTP 頭部信息、訪問控制,以及去除廣告和其它招人反感的互聯(lián)網(wǎng)垃圾。Privoxy 的配置非常靈活,能充分定制已滿足各種各樣的需求和偏好。它支持單機(jī)和多用戶網(wǎng)絡(luò)兩種模式。
Privoxy 使用 action 規(guī)則來處理瀏覽器和遠(yuǎn)程站點(diǎn)間的數(shù)據(jù)流。
其特性包括:
◆高度配置化——可以完全定制你的配置
◆廣告攔截
◆Cookie 管理
◆支持“Connection: keep-alive”。可以無視客戶端配置而保持外發(fā)的持久連接
◆支持 IPv6
◆標(biāo)簽化Tagging,允許按照客戶端和服務(wù)器的請(qǐng)求頭進(jìn)行處理
◆作為攔截intercepting代理器運(yùn)行
◆巧妙的動(dòng)作action和過濾機(jī)制用來處理服務(wù)器和客戶端的 HTTP 頭部
可以與其他代理軟件鏈?zhǔn)绞褂谩?/p>
◆整合了基于瀏覽器的配置和控制工具,能在線跟蹤規(guī)則和過濾效果,可遠(yuǎn)程開關(guān)
◆頁面過濾(文本替換、根據(jù)尺寸大小刪除廣告欄, 隱藏的“web-bugs”元素和 HTML 容錯(cuò)等)
◆模塊化的配置使得標(biāo)準(zhǔn)配置和用戶配置可以存放于不同文件中,這樣安裝更新就不會(huì)覆蓋用戶的個(gè)性化設(shè)置
◆配置文件支持 Perl 兼容的正則表達(dá)式,以及更為精妙和靈活的配置語法
◆GIF 去動(dòng)畫
◆旁路處理大量點(diǎn)擊跟蹤click-tracking腳本(避免腳本重定向)
◆大多數(shù)代理生成的頁面(例如 "訪問受限" 頁面)可由用戶自定義HTML模板
◆自動(dòng)監(jiān)測(cè)配置文件的修改并重新讀取
◆大多數(shù)功能可以基于每個(gè)站點(diǎn)或每個(gè) URL 位置來進(jìn)行控制
◆網(wǎng)站: www.privoxy.org
◆開發(fā): Fabian Keil(開發(fā)領(lǐng)導(dǎo)者), David Schmidt, 和眾多其他貢獻(xiàn)者
◆授權(quán):GNU GPL v2
◆版本號(hào): 3.4.2
3.Varnish Cache
Varnish Cache 是一個(gè)為性能和靈活性而生的 web 加速器。它新穎的架構(gòu)設(shè)計(jì)能帶來顯著的性能提升。根據(jù)你的架構(gòu),通常情況下它能加速響應(yīng)速度300-1000倍。Varnish 將頁面存儲(chǔ)到內(nèi)存,這樣 web 服務(wù)器就無需重復(fù)地創(chuàng)建相同的頁面,只需要在頁面發(fā)生變化后重新生成。頁面內(nèi)容直接從內(nèi)存中訪問,當(dāng)然比其他方式更快。
此外 Varnish 能大大提升響應(yīng) web 頁面的速度,用在任何應(yīng)用服務(wù)器上都能使網(wǎng)站訪問速度大幅度地提升。
按經(jīng)驗(yàn),Varnish Cache 比較經(jīng)濟(jì)的配置是1-16GB內(nèi)存+ SSD 固態(tài)硬盤。
其特性包括:
◆新穎的設(shè)計(jì)
◆VCL - 非常靈活的配置語言。VCL 配置會(huì)轉(zhuǎn)換成 C,然后編譯、加載、運(yùn)行,靈活且高效
◆能使用 round-robin 輪詢和隨機(jī)分發(fā)兩種方式來負(fù)載均衡,兩種方式下后端服務(wù)器都可以設(shè)置權(quán)重
◆基于 DNS、隨機(jī)、散列和客戶端 IP 的分發(fā)器Director
◆多臺(tái)后端主機(jī)間的負(fù)載均衡
◆支持 Edge Side Includes,包括拼裝壓縮后的 ESI 片段
◆重度多線程并發(fā)
◆URL 重寫
◆單 Varnish 能夠緩存多個(gè)虛擬主機(jī)
◆日志數(shù)據(jù)存儲(chǔ)在共享內(nèi)存中
◆基本的后端服務(wù)器健康檢查
◆優(yōu)雅地處理后端服務(wù)器“掛掉”
◆命令行界面的管理控制臺(tái)
◆使用內(nèi)聯(lián) C 語言來擴(kuò)展 Varnish
◆可以與 Apache 用在相同的系統(tǒng)上
◆單個(gè)系統(tǒng)可運(yùn)行多個(gè) Varnish
◆支持 HAProxy 代理協(xié)議。該協(xié)議在每個(gè)收到的 TCP 請(qǐng)求——例如 SSL 終止過程中——附加一小段 http 頭信息,以記錄客戶端的真實(shí)地址
◆冷熱 VCL 狀態(tài)
◆可以用名為 VMOD 的 Varnish 模塊來提供插件擴(kuò)展
◆通過 VMOD 定義后端主機(jī)
◆Gzip 壓縮及解壓
◆HTTP 流的通過和獲取
◆神圣模式和優(yōu)雅模式。用 Varnish 作為負(fù)載均衡器,神圣模式下可以將不穩(wěn)定的后端服務(wù)器在一段時(shí)間內(nèi)打入黑名單,阻止它們繼續(xù)提供流量服務(wù)。優(yōu)雅模式允許 Varnish 在獲取不到后端服務(wù)器狀態(tài)良好的響應(yīng)時(shí),提供已過期版本的頁面或其它內(nèi)容。
◆實(shí)驗(yàn)性支持持久化存儲(chǔ),無需 LRU 緩存淘汰
網(wǎng)站: www.varnish-cache.org
開發(fā): Varnish Software
授權(quán): FreeBSD
版本號(hào): 4.1.0
4.Polipo
Polipo 是一個(gè)開源的 HTTP 緩存代理,只需要非常低的資源開銷。
它監(jiān)聽來自瀏覽器的 web 頁面請(qǐng)求,轉(zhuǎn)發(fā)到 web 服務(wù)器,然后將服務(wù)器的響應(yīng)轉(zhuǎn)發(fā)到瀏覽器。在此過程中,它能優(yōu)化和整形網(wǎng)絡(luò)流量。從本質(zhì)來講 Polipo 與 WWWOFFLE 很相似,但其實(shí)現(xiàn)技術(shù)更接近于 Squid。
Polipo 最開始的目標(biāo)是作為一個(gè)兼容 HTTP/1.1 的代理,理論它能在任何兼容 HTTP/1.1 或更早的 HTTP/1.0 的站點(diǎn)上運(yùn)行。
其特性包括:
◆HTTP 1.1、IPv4 & IPv6、流量過濾和隱私保護(hù)增強(qiáng)
◆如確認(rèn)遠(yuǎn)程服務(wù)器支持的話,則無論收到的請(qǐng)求是管道處理過的還是在多個(gè)連接上同時(shí)收到的,都使用 HTTP/1.1 管道pipelining
◆下載被中斷時(shí)緩存起始部分,當(dāng)需要續(xù)傳時(shí)用區(qū)間Range請(qǐng)求來完成下載
◆將 HTTP/1.0 的客戶端請(qǐng)求升級(jí)為 HTTP/1.1,然后按照客戶端支持的級(jí)別進(jìn)行升級(jí)或降級(jí)后回復(fù)
◆全面支持 IPv6 (作用域(鏈路本地)地址除外)
◆作為 IPv4 和 IPv6 網(wǎng)絡(luò)的網(wǎng)橋
◆內(nèi)容過濾
◆能使用 Poor Man 多路復(fù)用技術(shù)Poor Man's Multiplexing降低延遲
◆支持 SOCKS 4 和 SOCKS 5 協(xié)議
◆HTTPS 代理
◆扮演透明代理的角色
◆可以與 Privoxy 或 tor 一起運(yùn)行
網(wǎng)站:www.pps.univ-paris-diderot.fr/~jch/software/polipo/
◆開發(fā):Juliusz Chroboczek, Christopher Davis
◆授權(quán):MIT License
◆版本號(hào):1.1.1
5.Tinyproxy
Tinyproxy 是一個(gè)輕量級(jí)的開源 web 代理守護(hù)進(jìn)程,其設(shè)計(jì)目標(biāo)是快而小。它適用于需要完整 HTTP 代理特性,但系統(tǒng)資源又不足以運(yùn)行大型代理的場(chǎng)景,比如嵌入式部署。
Tinyproxy 對(duì)小規(guī)模網(wǎng)絡(luò)非常有用,這樣的場(chǎng)合下大型代理會(huì)使系統(tǒng)資源緊張,或有安全風(fēng)險(xiǎn)。Tinyproxy 的一個(gè)關(guān)鍵特性是其緩沖連接的理念。從效果上看, Tinyproxy 對(duì)服務(wù)器的響應(yīng)進(jìn)行了高速緩沖,然后按照客戶端能夠處理的最高速度進(jìn)行響應(yīng)。該特性極大的降低了網(wǎng)絡(luò)延滯帶來的問題。
特性:
◆易于修改
◆隱匿模式 - 定義哪些 HTTP 頭允許通過,哪些又會(huì)被攔截
◆支持 HTTPS - Tinyproxy 允許通過 CONNECT 方法轉(zhuǎn)發(fā) HTTPS 連接,任何情況下都不會(huì)修改數(shù)據(jù)流量
◆遠(yuǎn)程監(jiān)控 - 遠(yuǎn)程訪問代理統(tǒng)計(jì)數(shù)據(jù),讓你能清楚了解代理服務(wù)當(dāng)前的忙碌狀態(tài)
◆平均負(fù)載監(jiān)控 - 通過配置,當(dāng)服務(wù)器的負(fù)載接近一定值后拒絕新連接
◆訪問控制 - 通過配置,僅允許指定子網(wǎng)或 IP 地址的訪問
◆安全 - 運(yùn)行無需額外權(quán)限,減小了系統(tǒng)受到威脅的概率
◆基于 URL 的過濾 - 允許基于域和URL的黑白名單
◆透明代理 - 配置為透明代理,這樣客戶端就無需任何配置
◆代理鏈 - 在流量出口處采用上游代理服務(wù)器,而不是直接轉(zhuǎn)發(fā)到目標(biāo)服務(wù)器,創(chuàng)建我們所說的代理鏈
◆隱私特性 - 限制允許從瀏覽器收到的來自 HTTP 服務(wù)器的數(shù)據(jù)(例如 cookies),同時(shí)限制允許通過的從瀏覽器到 HTTP 服務(wù)器的數(shù)據(jù)(例如版本信息)
◆低開銷 - 使用 glibc 內(nèi)存開銷只有2MB,CPU 負(fù)載按并發(fā)連接數(shù)線性增長(zhǎng)(取決于網(wǎng)絡(luò)連接速度)。 Tinyproxy 可以運(yùn)行在老舊的機(jī)器上而無需擔(dān)心性能問題。
◆網(wǎng)站:banu.com/tinyproxy
◆開發(fā):Robert James Kaes和其他貢獻(xiàn)者
◆授權(quán):GNU GPL v2
◆版本號(hào):1.8.3