- 鳳凰架構:構建可靠的大型分布式系統
- 周志明
- 866字
- 2021-06-24 11:31:00
4.4.3 CDN應用
CDN最初是為了快速分發靜態資源而設計的,但今天的CDN所能做的事情已經遠遠超越了最初的目標,限于這部分應用太多,無法展開逐一細說,筆者只能對現在CDN可以做的事情簡要列舉,以便讀者有個總體認知。
·加速靜態資源分發:這是CDN的本職工作。
·安全防御:CDN在廣義上可以視作網站的堡壘機,源站只對CDN提供服務,由CDN來對外界其他用戶提供服務,這樣惡意攻擊者就不容易直接威脅源站。CDN對某些攻擊手段的防御,如對DDoS攻擊的防御尤其有效。但需注意,將安全都寄托在CDN上本身是不安全的,一旦源站真實IP被泄漏,就會面臨很高的風險。
·協議升級:不少CDN提供商都同時對接(代售CA的)SSL證書服務,可以實現源站是基于HTTP協議的,而對外開放的網站是基于HTTPS的。同理,可以實現源站到CDN是HTTP/1.x協議,CDN提供的外部服務是HTTP/2或HTTP/3協議;實現源站是基于IPv4網絡的,CDN提供的外部服務支持IPv6網絡,等等。
·狀態緩存:4.1節介紹客戶端緩存時簡要提到了狀態緩存,而CDN不僅可以緩存源站的資源,還可以緩存源站的狀態,譬如可以通過CDN緩存源站的301/302狀態讓客戶端直接跳轉,也可以通過CDN開啟HSTS、通過CDN進行OCSP裝訂加速SSL證書訪問,等等。有一些情況下甚至可以配置CDN對任意狀態碼(譬如404)進行一定時間的緩存,以減輕源站壓力,但這個操作應當慎重,且在網站狀態發生改變時要及時刷新緩存。
·修改資源:CDN可以在返回資源給用戶的時候修改資源的任何內容,以實現不同的目的。譬如,可以對源站未壓縮的資源自動壓縮并修改Content-Encoding,以節省用戶的網絡帶寬消耗,可以對源站未啟用客戶端緩存的內容加上緩存Header,自動啟用客戶端緩存,可以修改CORS的相關Header,為源站不支持跨域的資源提供跨域能力,等等。
·訪問控制:CDN可以實現IP黑/白名單功能,如根據不同的來訪IP提供不同的響應結果,根據IP的訪問流量來實現QoS控制,根據HTTP的Referer來實現防盜鏈,等等。
·注入功能:CDN可以在不修改源站代碼的前提下,為源站注入各種功能。圖4-7所示是國際CDN巨頭CloudFlare提供的Google Analytics、PACE、Hardenize等第三方應用,這些原本需要在源站中注入代碼的應用,在有CDN參與的情況下均能做到無須修改源站任何代碼即可使用。

圖4-7 CloudFlare[1]提供的第三方應用
[1] https://www.cloudflare.com/。
- Kali Linux滲透測試全流程詳解
- Learn Helm
- Java EE 8 Design Patterns and Best Practices
- VMware NSX Cookbook
- 無蘋果不生活 The New iPad隨身寶典
- Application Development in iOS 7
- 操作系統分析
- Red Hat Enterprise Linux 6.4網絡操作系統詳解
- UI設計手繪表現從入門到精通
- VMware Horizon Mirage Essentials
- Mastering Sass
- 再也不踩坑的kubernetes實戰指南
- Mastering Eclipse Plug-in Development
- Docker for Developers
- Hyper-V Replica Essentials