分發Object Storage Service中的靜態資源(如圖片、音視頻、文檔)時,通過配置CDN加速,可以顯著提升訪問速度、降低網路延遲,並削減流量成本。
工作原理
CDN加速OSS採用分布式緩衝架構,將儲存在OSS Bucket(來源站點)中的靜態內容主動分發並緩衝到遍布全球的CDN邊緣節點上,通過就近訪問機制實現加速效果。
使用者首次請求資源時,請求通過智能DNS解析被路由到地理位置最近且網路狀況最優的CDN節點。
該CDN節點檢測到本地無此資源緩衝,隨即向OSS來源站點發起回源請求擷取資源內容。
OSS響應資源內容後,CDN節點根據預設緩衝規則將資源儲存在本地,同時向使用者返回資源內容。
後續使用者請求相同資源時,CDN節點直接從本機快取響應,無需回源擷取。這一機制大幅縮短訪問路徑,降低網路延遲,實現訪問加速的同時減少來源站點負載。
配置CDN加速
配置CDN加速前,請確保已擁有一個登入的網域名稱或註冊一個新網域名稱,支援綁定非阿里雲註冊的網域名稱。如果加速地區包含中國內地,用於加速的網域名稱必須完成ICP備案。
步驟一:添加CDN加速網域名稱並配置來源站點
前往CDN控制台,單擊添加網域名稱。
選擇加速地區和業務類型,填寫加速網域名稱,加速網域名稱支援主網域名稱(如
example.cn)或自訂的子網域名稱(如oss.example.cn),建議使用子網域名稱以便於管理和擴充。按下圖所示添加來源站點資訊,將OSS Bucket網域名稱配置為回源地址,然後單擊下一步,完成網域名稱添加。

步驟二:配置CNAME解析規則
通過DNS CNAME記錄將加速網域名稱指向CDN分配的CNAME地址,實現網域名稱解析到CDN節點的路由功能。
在推薦配置頁面單擊開啟設定精靈,或者返回網域名稱管理頁面,將滑鼠移動至網域名稱右側的待配置處,在提示視窗單擊開啟設定精靈。

複製CNAME記錄值(如
example.cn.w.kunlunap.com),該地址用於DNS解析配置。前往Alibaba Cloud DNS控制台,在目標網域名稱操作列單擊解析設定。
單擊添加記錄,按照下方配置列表填寫記錄資訊,其餘配置項可保持預設設定。如果已存在CNAME解析記錄,請單擊解析記錄操作列的修改,將記錄值修改為複製CNAME記錄值。
記錄類型:選擇CNAME。
主機記錄:如果綁定的是主網域名稱(如
example.cn),填寫@。如果綁定的是子網域名稱,填寫子網域名稱首碼,如綁定oss.example.cn,則主機記錄填寫oss。記錄值:填寫複製的CNAME記錄值。
單擊確定,然後在彈出的解析變更確認視窗,再次單擊確定,完成網域名稱解析配置。
DNS解析的生效時間取決於記錄的TTL(存留時間)設定,完全生效通常需要幾分鐘到幾小時。配置後立即訪問無效屬於正常現象,請耐心等待或嘗試清除本地DNS緩衝。
步驟三:設定回源私人Bucket
預設情況下,新建立的Bucket讀寫權限為私人,通過CDN訪問時需要開啟私人Bucket回源功能,授權CDN節點訪問私人資源。如果將Bucket讀寫權限設為公用讀取,CDN可直接存取,無需開啟此功能。
前往CDN控制台,單擊目標網域名稱,然後在左側導覽列單擊回源配置。
在阿里雲OSS私人Bucket回源部分按照下圖所示開啟私人Bucket回源。

開啟私人Bucket回源後,CDN將獲得訪問私人Bucket的授權,並自動在回源請求中添加簽名資訊。因此,用戶端必須使用不包含簽名參數的URL(如http://example.cn/dest.jpg)進行訪問。若URL中仍攜帶Expires、Signature等簽名參數,將導致OSS鑒權失敗,返回403錯誤。
步驟四:驗證加速效果
配置完成後,通過對比測實驗證CDN加速網域名稱的效能提升效果。
上傳檔案到Bucket
在Bucket列表頁面單擊Bucket名稱,然後在檔案清單頁面單擊上傳檔案,選擇需要上傳的靜態資源(如dest.jpg),按頁面提示完成上傳。
擷取檔案訪問URL
OSS預設訪問URL:在檔案清單頁面單擊目標檔案操作列的詳情,然後在詳情頁單擊複製檔案URL。

CDN加速訪問URL:使用CDN加速網域名稱和檔案名稱,構造一個不包含簽名資訊的訪問URL,例如
http://example.cn/dest.jpg,其中example.cn為CDN加速網域名稱。
驗證加速效果
使用專業的測速平台或工具(如CloudMonitor一次性撥測工具),對比OSS預設訪問URL和CDN加速訪問URL訪問同一個檔案的載入時間。
說明測試資料僅供參考,因不同的網路環境、地理位置等因素,訪問速度提升的比例存在差異。首次檢測時,因CDN節點無緩衝,需回源擷取資源,加速效果可能不明顯。請於首次檢測後,待CDN緩衝生效後再次進行測試,以驗證CDN加速效果。

檢查快取命中狀態
通過瀏覽器的開發人員工具(F12),查看資源請求的回應標頭(Response Headers)中
X-Cache欄位的值,判斷請求是否命中CDN緩衝。若值以
HIT開頭,表示成功命中CDN緩衝,實現了加速效果。若值以
MISS開頭,表示未命中CDN緩衝,請求已回源至OSS擷取資源。
配置回源多個Bucket
當業務架構依賴於多個OSS Bucket儲存不同類型或歸屬的資源時,可以通過以下兩種CDN多源配置方案來滿足不同的業務需求。
方式一:獨立子網域名稱架構
為不同功能或資源類型的Bucket分配獨立的、語義化的子網域名稱,並為每個子網域名稱配置單獨的CDN加速,如圖片資源使用子網域名稱img.example.cn,音視頻資源使用video.example.cn。語義化的子網域名稱不僅便於Team Dev識別和維護,還能在DNS層面實現流量分流,避免單一網域名稱的並發串連限制。
這種架構將不同類型資源完全隔離,各Bucket的緩衝策略、安全配置、監控警示都可以獨立設定和調優:
圖片資源可配置長期緩衝策略以提升訪問速度
視頻資源可啟用Range回源支援斷點續傳
敏感文檔可單獨啟用URL鑒權保障安全
獨立的監控體系能夠精確定位效能瓶頸和異常流量,實現精細化營運管理,同時降低不同業務間的相互影響風險。
方式二:統一網域名稱路徑路由
當多個Bucket分屬不同業務或應用,卻希望對外提供統一訪問入口時,可配置單一CDN加速網域名稱,利用規則引擎將不同訪問路徑的請求回源至指定Bucket。這樣既能統一品牌形象,又能簡化網域名稱與SSL認證的維護,降低營運複雜度。採用兩個Bucket(cdn-bucket1、cdn-bucket2)為例說明配置方法。
添加路徑規則
首先,在CDN控制台單擊目標加速網域名稱,然後單擊,按下圖所示添加兩條URL路徑規則,分別用於匹配
http://example.cn/bucket1/*和http://example.cn/bucket2/*。其中example.cn為加速網域名稱,使用bucket1和bucket2作為虛擬路徑分別指向cdn-bucket1和cdn-bucket2,*為對象在Bucket內的真實路徑。
配置條件來源站點
在加速網域名稱的基本配置中配置兩個條件來源站點,將先前建立的路徑規則與各自的目標Bucket來源站點地址進行綁定,實現請求根據路徑規則自動路由到對應來源站點。

指定來源站點回源HOST
配置條件來源站點路由後,還需在加速網域名稱的回源配置中為每個來源站點指定來源站點回源HOST,確保回源請求能夠正確到達目標Bucket。

重寫回源URL
為確保來源站點能正確定位資源,需在加速網域名稱的回源配置中重寫回源URL,在回源時自動剝離用於路由的虛擬路徑(如
/bucket1),使回源請求路徑與Bucket內的對象實際儲存路徑保持一致。
效果驗證
配置完成後,即可使用單一CDN加速網域名稱根據不同路徑訪問不同的OSS Bucket資源,實現統一入口的多來源站點訪問。

應用於生產環境
最佳實務
安全傳輸:啟用HTTPS
為加速網域名稱配置HTTPS認證,並啟用強制HTTPS跳轉,實現用戶端到CDN節點間的資料加密傳輸。HTTPS不僅能有效防止資料在傳輸過程中被竊取或篡改,還能避免瀏覽器地址欄出現"不安全"警告,提升使用者信任度與品牌形象,同時滿足現代Web安全標準要求。
效能最佳化:配置綜合緩衝策略
緩衝策略是CDN效能的核心要素。一個完善的緩衝策略應包含緩衝有效期間和參數處理兩個維度,以實現最優的效能和功能相容性。
設定緩衝有效期間:通過設定合理的緩衝周期,最大化快取命中率,顯著降低回源請求頻次和頻寬成本。
不常更新的靜態檔案(如圖片、音視頻、應用安裝包):建議設定較長的緩衝時間,例如1個月以上,減少不必要的回源請求。
頻繁更新的靜態檔案(如JS、CSS):根據業務更新頻率設定為數小時或數天,並配合版本號碼(例如
style.v1.1.css)進行版本管理。動態檔案或API(如PHP、JSP):緩衝時間應設定為0秒(不緩衝),確保每次請求都能擷取最新內容。
配置參數處理以啟用圖片處理:OSS的圖片處理(如縮放、裁剪、浮水印)是高頻使用功能。預設情況下,CDN為最大化快取命中率會“過濾全部參數”,這會導致
?x-oss-process類的圖片處理指示失效。為正常使用此功能,必須前往CDN控制台的,修改忽略參數配置。
可用性保障:使用資源預熱與自動重新整理
啟用緩衝後,來源站點檔案的更新將無法立即同步到CDN邊緣節點。為確保使用者能及時訪問最新資源,並保障在版本發布等關鍵時期的服務穩定性,建議採用以下策略。
資源預熱:在版本發布或營運活動前,使用CDN的重新整理和預熱功能將熱點資源提前分發至全球節點。這可以避免上線瞬間大量回源請求對來源站點造成衝擊,保障使用者首次訪問的流暢體驗。
緩衝自動重新整理:在OSS控制台的頁面為綁定的網域名稱開啟“CDN緩衝自動重新整理”。當通過API更新OSS檔案時,OSS會自動觸發CDN重新整理任務,確保使用者能及時訪問到最新資源。
說明此功能僅在CDN加速與OSS Bucket歸屬同一阿里雲帳號時有效,且不保證絕對的及時性。對於時效性要求極高的情境,建議在更新檔案後主動使用CDN的重新整理功能。
跨域訪問:配置CORS策略
當前端應用需要跨域訪問CDN加速的OSS資源時,僅在OSS Bucket上配置CORS規則可能因CDN緩衝機制而失效。這是因為瀏覽器收到的可能是緩衝中不含CORS回應標頭的舊資源。為確保跨域策略穩定生效,最佳實務是在CDN層面直接配置CORS相關回應標頭。
在CDN控制台頁面單擊加速網域名稱或加速網域名稱操作列的管理。
在頁面按下圖所示配置回應標頭參數和回應標頭值。
說明參數設定僅供參考,請結合實際業務情境進行調整。

配置完成後,通過CDN節點訪問OSS資源時,響應中將穩定包含指定的CORS頭,確保跨域請求正常通過瀏覽器校正。

效能最佳化:提升大檔案與資料轉送效率
開啟Range回源:對於音ApsaraVideo for VOD、大檔案分發等情境,開啟Range回源功能至關重要。它允許CDN節點按需分區請求大檔案,不僅能實現視頻拖動播放等進階功能,還能顯著減少不必要的回源流量和首屏等待時間。
最佳化資料轉送:為減小JS、CSS、HTML等文字檔的傳輸體積,提高傳輸效率,可以在CDN控制台開啟Gzip壓縮或頁面最佳化功能。Gzip壓縮會對資源進行壓縮後返回,頁面最佳化則會自動刪除HTML頁面、內嵌JavaScript和CSS中的注釋及重複空白符等冗餘內容。
說明開啟頁面最佳化或Gzip壓縮功能會改變檔案的Content-Length和Content-MD5值。如果商務邏輯依賴這些值進行校正,請謹慎開啟。
若同時開啟了頁面最佳化和Gzip壓縮功能,頁面最佳化功能將會失效,CDN只會對檔案進行Gzip壓縮。
平滑上線:零停機網域名稱切換 在將現有業務從OSS Bucket網域名稱切換至CDN加速網域名稱時,應採用分階段切換策略以確保服務連續性和業務穩定。
準備階段:完成CDN加速網域名稱的所有配置,並在測試環境中充分驗證其功能和效能表現。
灰階發布階段(建議在業務低峰期):採用灰階發布的方式將部分業務流量切換至CDN加速網域名稱,通過逐步放量降低切換風險。
驗證階段:密切監控業務訪問日誌和錯誤率,分析回應時間、成功率等關鍵計量,確保灰階發布服務正常且業務運行平穩。
全量發布階段:經過充分驗證後,將全量業務流量切換至CDN加速網域名稱,完成網域名稱遷移。
復原預案:如遇問題,立即復原至Bucket網域名稱,並詳細分析問題根因後重新部署。
風險防範
流量盜用防護:配置Referer防盜鏈與URL鑒權 為防止資源被非法網站盜用,產生不必要的流量費用和頻寬消耗,必須配置安全防護策略。
Referer防盜鏈:配置Referer黑/白名單,通過校正HTTP要求標頭中的Referer欄位,僅允許來自指定網域名稱的訪問,這是最基礎有效防盜鏈手段。
URL鑒權:針對私人許可權的OSS Bucket,開啟CDN的“私人Bucket回源”後,CDN節點即獲得訪問授權,這使得原本需要簽名的私人資源能通過CDN網域名稱被公開訪問。為恢複對私人資源的安全控制,建議在CDN層面啟用URL鑒權。該功能通過校正URL中的加密串和時間戳記,可有效防止私人內容被惡意下載和傳播,實現對資源的精細化訪問保護。
回源鏈路保障:配置回源SNI與回源HOST
確保CDN與OSS之間的回源通訊穩定且安全,是服務可用性的關鍵保障。
配置回源SNI:為避免不帶SNI(Server Name Indication)的CDN回源請求導致OSS訪問異常,需在CDN中配置回源SNI,並設定其與回源HOST相同(回源HOST預設為加速網域名稱)。當回源請求攜帶SNI時,OSS能夠在TLS握手階段精準識別業務網域名稱,從而返回匹配的認證,為網域名稱提供訪問防護。若OSS接收到不攜帶SNI的請求,將無法進行業務網域名稱的精準識別,只能返回預設認證。在TLS握手階段,所有不帶SNI的請求會被視為同類處理,可能觸發更嚴格的流量限制,進而影響正常訪問。
隱藏來源站點資訊
預設情況下,CDN使用Bucket網域名稱回源。當回源出錯時(如檔案不存在),錯誤資訊中可能暴露OSS Bucket網域名稱,存在安全風險。

為隱藏來源站點資訊,提升安全性,可按以下步驟將回源HOST修改為CDN加速網域名稱:
行為審計與排障:啟用訪問日誌 生產環境必須具備完善的日誌記錄能力,以便進行安全審計、效能分析和故障排查。建議在CDN控制台配置即時日誌推送,將訪問日誌投遞到Log ServiceSLS。通過SLS,可以對訪問行為、流量分布、熱門資源、錯誤請求等進行深度分析和監控警示,為業務最佳化和安全防護提供資料支撐。
計費說明
常見問題
為什麼CDN回源時出現 5xx 報錯?
5xx 錯誤表示CDN無法成功從OSS來源站點擷取資源,需要從以下方面進行排查:
為什麼配置靜態頁面後通過CDN加速訪問報錯 403 Forbidden 或 You are forbidden to list buckets ?
原因分析:此問題通常發生在為配置了“靜態網站託管”的私人Bucket開啟CDN加速後。根本原因在於兩種訪問機制的衝突:
CDN私人回源:CDN回源至OSS時,會攜帶簽名資訊進行身分識別驗證。
OSS靜態網站託管:其預設首頁功能(如訪問
/時自動返回index.html)要求訪問請求必須是匿名的。
當使用者訪問加速網域名稱的根目錄時,CDN會發起一個帶簽名的請求訪問Bucket的根目錄。OSS收到此簽章要求後,因其非匿名而不會觸發靜態網站託管邏輯,轉而嘗試執行ListObjects(列舉檔案)操作。由於存取原則通常禁止此類操作,最終導致返回403 Forbidden錯誤。
解決方案:繞過OSS的靜態網站託管機制,直接在CDN層面通過配置URL改寫規則實現同樣效果。
待重寫的Path:
^/$(匹配根目錄訪問)目標Path:
/index.html(或實際首頁檔案名稱)執行規則:選擇Redirect
是否可以通過CDN網域名稱上傳檔案到OSS?
出於安全考慮,不建議通過CDN網域名稱上傳檔案到OSS。如果CDN被設定為公用寫入,這意味著任何人不需要身分識別驗證或授權都可以通過CDN上傳檔案到OSS,容易受到惡意上傳和資料篡改的攻擊。建議在限制最小許可權的前提下,使用OSS網域名稱上傳檔案。
使用CDN加速後OSS下行流量是否會變少?
如果CDN緩衝的檔案被頻繁命中,OSS的公網流出流量會顯著降低,從而減少OSS流量成本。
CDN快取檔案被頻繁命中的前提是,業務情境中的部分資料在某段時間內被頻繁訪問,例如網站訪問、圖片檔案下載、遊戲發行等情境。快取命中率越高,回源流量越少,成本節省效果越明顯。
如何統計檔案的真實訪問次數?
啟用CDN加速後,OSS的訪問日誌將無法記錄由CDN緩衝直接響應的終端使用者訪問請求,可通過以下方式統計檔案的真實訪問次數:
