基本簡介
CDN的全稱是Content Delivery Network,即內容分發網路。其基本思路是儘可能避開網際網路上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。通過在網路各處放置反向代理節點伺服器所構成的在現有的網際網路基礎之上的一層智慧型虛擬網路,CDN系統能夠實時地根據網路流量和各節點的連線、負載狀況以及到用戶的距離和回響時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上。其目的是使用戶可就近取得所需內容,解決 Internet網路擁擠的狀況,提高用戶訪問網站的回響速度。
工作方式
通常的代理伺服器,只用於代理內部網路對Internet的連線請求,客戶機必須指定代理伺服器,並將本來要直接傳送到Web伺服器上的http請求傳送到代理伺服器中。由於外部網路上的主機並不會配置並使用這個代理伺服器,普通代理伺服器也被設計為在Internet上搜尋多個不確定的伺服器,而不是針對Internet上多個客戶機的請求訪問某一個固定的伺服器,因此普通的Web代理伺服器不支持外部對內部網路的訪問請求。當一個代理伺服器能夠代理外部網路上的主機,訪問內部網路時,這種代理服務的方式稱為反向代理服務。此時代理伺服器對外就表現為一個Web伺服器,外部網路就可以簡單把它當作一個標準的Web伺服器而不需要特定的配置。不同之處在於,這個伺服器沒有保存任何網頁的真實數據,所有的靜態網頁或者CGI程式,都保存在內部的Web伺服器上。因此對反向代理伺服器的攻擊並不會使得網頁信息遭到破壞,這樣就增強了Web伺服器的安全性。
反向代理方式和包過濾方式或普通代理方式並無衝突,因此可以在防火牆設備中同時使用這兩種方式,其中反向代理用於外部網路訪問內部網路時使用,正向代理或包過濾方式用於拒絕其他外部訪問方式並提供內部網路對外部網路的訪問能力。因此可以結合這些方式提供最佳的安全訪問方式。
伺服器介紹
如果您的內容伺服器具有必須保持安全的敏感信息,如信用卡號資料庫,可在防火牆外部設定一個代理伺服器作為內容伺服器的替身。當外部客戶機嘗試訪問內容伺服器時,會將其送到代理伺服器。實際內容位於內容伺服器上,在防火牆內部受到安全保護。代理伺服器位於防火牆外部,在外部客戶機看來就像是內容伺服器。
當客戶機向站點提出請求時,請求將轉到代理伺服器。然後,代理伺服器通過防火牆中的特定通路,將客戶機的請求傳送到內容伺服器。內容伺服器再通過該通道將結果回傳給代理伺服器。代理伺服器將檢索到的信息傳送給客戶機,好像代理伺服器就是實際的內容伺服器(參見圖1)。如果內容伺服器返回錯誤訊息,代理伺服器會先行截取該訊息並更改標頭中列出的任何URL,然後再將訊息傳送給客戶機。如此可防止外部客戶機獲取內部內容伺服器的重定向URL。
這樣,代理伺服器就在安全資料庫和可能的惡意攻擊之間提供了又一道屏障。與有權訪問整個資料庫的情況相對比,就算是僥倖攻擊成功,作惡者充其量也僅限於訪問單個事務中所涉及的信息。未經授權的用戶無法訪問到真正的內容伺服器,因為防火牆通路只允許代理伺服器有權進行訪問。
可以配置防火牆路由器,使其只允許特定連線埠上的特定伺服器(在本例中為其所分配連線埠上的代理伺服器)有權通過防火牆進行訪問,而不允許其他任何機器進出。安全反向代理當代理伺服器與其他機器之間有一個或多個連線使用安全套接字層(SSL)協定加密數據時,即會進行安全反向代理。
用途介紹
安全反向代理有許多用途:
可以提供從防火牆外部代理伺服器到防火牆內部安全內容伺服器的加密連線。
可以允許客戶機安全地連線到代理伺服器,從而有利於安全地傳輸信息(如信用卡號)。
安全反向代理會造成各安全連線因加密數據所涉及的系統開銷而變慢。但是,由於SSL提供了高速快取機制,所以連線雙方可以重複使用先前協商的安全參數,從而大大降低後續連線的系統開銷。
配置方法
配置安全反向代理伺服器的方法有三種:
Secureclienttoproxy。如果未經授權的用戶很少或根本沒有機會訪問代理伺服器與內容伺服器之間交換的信息,則此方案很有效。客戶機安全連線到代理伺服器
Secureproxytocontentserver。如果客戶機在防火牆外部而內容伺服器在防火牆內部,則此方案很有效。在此方案中,代理伺服器可以充當站點之間的安全通道。
代理伺服器安全連線到內容伺服器
Secureclienttoproxyandsecureproxytocontentserver。如果需要保護伺服器、代理伺服器和客戶機三者間所交換信息的安全,則此方案很有效。在此方案中,代理伺服器既可起到站點間安全通道的作用,又可增加客戶機驗證的安全性
客戶機安全連線到代理伺服器並且代理伺服器安全連線到內容伺服器
有關如何設定上述每種配置的信息,參見設定反向代理伺服器。
除了SSL之外,代理伺服器還可以使用客戶機驗證,這種方法要求向代理伺服器提出請求的計算機提供證書(或標識表單)以核實其身份。
比較簡介
下面將對幾種典型的代理服務作一個簡單的比較。在網路上常見的代理伺服器有三種:
一個標準的代理緩衝服務被用於快取靜態的網頁(例如:html檔案和圖片檔案等)到本地網路上的一台主機上(即代理伺服器)。當被快取的頁面被第二次訪問的時候,瀏覽器將直接從本地代理伺服器那裡獲取請求數據而不再向原web站點請求數據。這樣就節省了寶貴的網路頻寬,而且提高了訪問速度。但是,要想實現這種方式,必須在每一個內部主機的瀏覽器上明確指明代理伺服器的IP位址和連線埠號。客戶端上網時,每次都把請求送給代理伺服器處理,代理伺服器根據請求確定是否連線到遠程web伺服器獲取數據。如果在本地緩衝區有目標檔案,則直接將檔案傳給用戶即可。如果沒有的話則先取回檔案,先在本地保存一份緩衝,然後將檔案發給客戶端瀏覽器。
2.透明代理緩衝伺服器
透明代理緩衝服務和標準代理伺服器的功能完全相同。但是,代理操作對客戶端的瀏覽器是透明的(即不需指明代理伺服器的IP和連線埠)。透明代理伺服器阻斷網路通信,並且過濾出訪問外部的HTTP(80連線埠)流量。如果客戶端的請求在本地有緩衝則將緩衝的數據直接發給用戶,如果在本地沒有緩衝則向遠程web伺服器發出請求,其餘操作和標準的代理伺服器完全相同。對於Linux作業系統來說,透明代理使用Iptables或者Ipchains實現。因為不需要對瀏覽器作任何設定,所以,透明代理對於ISP(Internet伺服器提供商)特別有用。
3.反向代理緩衝伺服器
反向代理是和前兩種代理完全不同的一種代理服務。使用它可以降低原始WEB伺服器的負載。反向代理伺服器承擔了對原始WEB伺服器的靜態頁面的請求,防止原始伺服器過載。它位於本地WEB伺服器和Internet之間,處理所有對WEB伺服器的請求,組織了WEB伺服器和Internet的直接通信。如果網際網路用戶請求的頁面在代理伺服器上有緩衝的話,代理伺服器直接將緩衝內容傳送給用戶。如果沒有緩衝則先向WEB伺服器發出請求,取回數據,本地快取後再傳送給用戶。這種方式通過降低了向WEB伺服器的請求數從而降低。
軟體介紹
1.Fikker反向代理伺服器
Fikker是一款利於反向代理原理實現的專業級的網站加速伺服器軟體,全界面化管理配置,利用頁面快取技術(webcache),網站管理員或網站開發人員通過Fikker管理平台將指定的頁面快取起來,用戶在訪問已快取頁面的時候,就不需要網站讀取資料庫後再生成頁面了,Fikker直接返回用戶需要的頁面,成倍的提成網站回響速度;另外Fikker通過gzip將頁面(html,asp,php,css,js)壓縮起來,減少了傳輸尺寸,提高傳輸效率和減少頻寬占用。作為網站的前置伺服器,Fikker還提供了強大的實時監控功能,防盜鏈,源站負載均衡,偽靜態(url靜態化),Ajax跨域操作,防CC攻擊,黑名單管理,訪問統計等一站式解決方案,網站管理簡單到極致,但功能非常強大。Fikker軟體從原始架構開始設計,跨平台(支持Windows和Linux)和面向伺服器類軟體方向設計,經過多年的精雕細琢,穩定性,功能性和易用性大大提升,實現了很多創新,例如:公共快取,會員快取和遊客快取設計。
2Nginx:
Nginx("enginex")是一個高性能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP代理伺服器。Nginx是由IgorSysoev為俄羅斯訪問量第二的Rambler.ru站點開發的,它已經在該站點運行超過兩年半了。Igor將原始碼以類BSD許可證的形式發布。儘管還是測試版,但是,Nginx已經因為它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名了。
Nginx的優點
Nginx做為HTTP伺服器,有以下幾項基本特性:
1.處理靜態檔案,索引檔案以及自動索引;打開檔案描述符緩衝;
2.無快取的反向代理加速,簡單的負載均衡和容錯.FastCGI,簡單的負載均衡和容錯。
3Squid
對於Web用戶來說,Squid是一個高性能的代理快取伺服器,可以加快內部網瀏覽Internet的速度,提高客戶機的訪問命中率。Squid不僅支持HTTP協定,還支持FTP、gopher、SSL和WAIS等協定。和一般的代理快取軟體不同,Squid用一個單獨的、非模組化的、I/O驅動的進程來處理所有的客戶端請求。Squid將數據元快取在記憶體中,同時也快取DNS查尋的結果,除此之外,它還支持非模組化的DNS查詢,對失敗的請求進行消極快取。Squid支持SSL,支持訪問控制。由於使用了ICP,Squid能夠實現重疊的代理陣列,從而最大限度的節約頻寬。Squid由一個主要的服務程式Squid,一個DNS查詢程式dnsserver,幾個重寫請求和執行認證的程式,以及幾個管理工具組成。當Squid啟動以後,它可以派生出指定數目的dnsserver進程,而每一個dnsserver進程都可以執行單獨的DNS查詢,這樣一來就大大減少了伺服器等待DNS查詢的時間。Squid的另一個優越性在於它使用訪問控制清單(ACL)和訪問許可權清單(ARL)。訪問控制清單和訪問許可權清單通過阻止特定的網路連線來減少潛在的Internet非法連線,可以使用這些清單來確保內部網的主機無法訪問有威脅的或不適宜的站點。