本文介紹使用 CDN 加速 OSS 資源時常見的問題及解決方案,涵蓋加速驗證、HTTPS 部署、私人 Bucket 回源、緩衝策略、圖片處理與視頻截幀、防盜鏈配置等情境。
如何校正已成功使用 CDN 加速 OSS?
第一步:檢查 CNAME 記錄
以阿里雲 DNS 為例,登入 DNS 管理主控台,選擇公網權威解析,單擊網域名稱右側的解析設定。
查看 CDN 加速網域名稱(如
oss.example.com)對應的 CNAME 記錄(如oss.example.com.w.kunlunaq.com)是否已成功添加,狀態為啟用。
第二步:通過 nslookup 命令驗證網域名稱是否指向了 CDN 節點
開啟 cmd 程式(Windows)、終端(macOS / Linux)。
輸入
nslookup -type=CNAME 加速網域名稱,如果返回的解析結果和 CDN 控制台上該加速網域名稱的 CNAME 值一致,則表示 CDN 加速已經生效。
如果還未配置 CNAME,參見配置 CNAME。
OSS 私人 Bucket 如何使用 CDN 加速?
如果加速網域名稱的來源站點為私人 Bucket,需為加速網域名稱開啟OSS私人Bucket回源實現通過 CDN 加速 OSS 私人 Bucket 資源。
開啟私人 Bucket 回源功能後,可以通過 CDN 加速網域名稱訪問私人 Bucket 內的所有資源,原 URL 的私人鑒權方式將失效。可配合使用 CDN 提供的 Referer 防盜鏈功能、URL 鑒權功能保護資源不被盜刷,更多資訊參見配置Referer黑/白名單和配置URL鑒權。
CDN 加速 OSS 情境下如何部署 HTTPS 認證?
CDN 加速 OSS 情境下,僅需在 CDN 上部署 HTTPS 認證,詳情參見配置HTTPS認證。
如果認證由阿里雲數位憑證管理服務(原 SSL 憑證)託管,也可以通過數位憑證管理服務控制台部署,詳情參見部署 SSL 憑證到阿里雲產品。
訪問返回 403 Forbidden
排查方向:
查看分頁錯誤資訊,如果出現
You don't have permission to access the URL on this server或You are forbidden to list buckets,並附帶denied by IP ACL = not in whitelist(被 IP 規則中的白名單攔截)等錯誤資訊,可根據錯誤資訊快速定位被攔截的策略。如果只出現
You don't have permission to access the URL on this server且無對應攔截資訊,請檢查 CDN 中 URL 鑒權和遠程鑒權。
某網域名稱圖片調用不成功且提示無許可權訪問:
檢查私人 Bucket 回源開關:登入 CDN 控制台,進入目標網域名稱的網域名稱管理,確認已開啟阿里雲 OSS 私人 Bucket 回源。若未開啟,CDN 無許可權訪問 OSS 私人資源,會導致 403 錯誤。
檢查 Referer 黑白名單配置:進入目標網域名稱的,確認請求的 Referer 是否在白名單中。若被 Referer 規則攔截,請將目標 Referer 加入白名單。
如果已配置 OSS 靜態頁面託管功能,且首頁指定的檔案(如 index.html)或 Bucket 的許可權為私人,需要開啟OSS私人Bucket回源功能。之後通過 CDN 配置 URL 重寫規則,將存取 URL 重寫為指向配置的首頁檔案(如 index.html)。CDN 節點將通過 302 重新導向的方式使用戶端請求 index.html 的內容,實現靜態頁面託管功能,詳細配置參見重寫訪問URL。配置方法:待改寫的 Path 配置為 ^/$,目標 Path 配置為 /index.html,執行規則 選擇 Redirect。
CDN 加速 OSS 情境下為什麼開啟 CDN 後感覺訪問更慢了?
CDN 加速 OSS 情境下,用戶端使用加速網域名稱訪問資源時,首次訪問的請求先到達 CDN 節點。由於此時 CDN 節點還未緩衝資源,CDN 節點將訪問 OSS 擷取資源並緩衝至 CDN 節點,後續對該資源的請求將從 CDN 節點直接返回給用戶端。因此第一次訪問時,可能比未配置 CDN 加速時慢。
可通過 CDN 的預熱功能將 OSS 資源提前緩衝至 CDN 節點,用戶端首次請求資源時即可直接從 CDN 節點擷取,無需再回來源站點擷取,操作步驟參見重新整理和預熱資源。
CDN 回源 OSS 頻率高如何設定緩衝策略?
如果未配置緩衝到期時間或配置的緩衝時間不合理,可能導致高頻的 CDN 回源操作,增加回源至 OSS 的流量及相關費用,並可能降低訪問速度。可以根據業務實際情況配置緩衝到期時間:
不常更新的靜態檔案(如圖片、應用安裝包等),建議設定 1 個月以上。
頻繁更新的靜態檔案(如 JS、CSS 等),根據實際業務情況設定。
更多資訊參見配置URL鑒權。
CDN 加速 OSS 情境下 OSS 檔案重新整理後如何確保使用者訪問到最新的資源?
在 OSS 上修改檔案後,如果希望 CDN 節點緩衝自動重新整理,可以提供用戶端訪問修改後的內容,可以前往 OSS 控制台開啟 CDN 緩衝自動重新整理功能。具體配置參見CDN 緩衝自動重新整理配置中的"開啟 CDN 緩衝自動重新整理"部分。
此功能不保證一定能成功提交重新整理任務,也不保證重新整理任務提交的及時性。如果對時效性有要求或需要瞭解重新整理結果,可以使用 CDN 的重新整理功能,參見重新整理和預熱資源。
OSS 控制台上無法開啟 CDN 自動重新整理怎麼辦?
無法開啟 CDN 緩衝自動重新整理,提示"請先在 OSS 上綁定該網域名稱"。
解決方案:單擊OSS 網域名稱綁定列對應網域名稱的未綁定,根據介面提示綁定網域名稱即可。如果已經綁定 CDN 且 DNS 已解析到 CDN 的 CNAME 網域名稱,綁定 OSS 網域名稱後不要修改 DNS 解析,否則將無法繼續使用 CDN 加速服務。
使用 CDN 加速 OSS 後 OSS 圖片處理的參數為什麼不生效?
CDN 加速 OSS 情境下,請求先到達 CDN 節點。如果 CDN 開啟了忽略參數功能,CDN 節點處理使用者請求時會去除請求 URL 中 ? 之後的參數。如果資源已緩衝,則不會回源 OSS 擷取資源,此時 OSS 圖片處理將無法生效。更多資訊參見忽略參數。
關閉 CDN 的忽略參數功能,當使用者請求攜帶參數時將觸發回源 OSS,此時 OSS 圖片處理可以正常生效。
關閉忽略參數後,由於攜帶參數的請求均會觸發回源,快取命中率可能會降低。也可以通過 CDN 提供的圖片處理概述功能,在 CDN 節點上完成圖片處理。
視頻截幀情境的特殊配置
使用 OSS 視頻截幀功能時(通過 x-oss-process=video/snapshot,t_1000 等參數),如果 CDN 網域名稱開啟了忽略參數,原視頻連結與帶截幀參數的連結會被緩衝為同一份資源,導致訪問視頻時返回截幀圖片,或訪問截幀時返回原視頻。
解決方案:通過 CDN 控制台的忽略 URL 參數功能,使用保留指定參數模式,將 x-oss-process 參數設定為保留。這樣帶截幀參數的 URL 能夠單獨緩衝,不會與原視頻緩衝衝突。修改配置後,需要對視頻檔案所在目錄執行目錄重新整理操作。
CDN 回源 OSS 時如何排除某個目錄或某些檔案使其不被 CDN 緩衝?
在 CDN 加速 OSS 情境下,某些檔案或目錄可能需要跳過 CDN 緩衝,每次請求都直接從 OSS 擷取最新版本。可通過以下兩種方式實現,具體選擇取決於管理習慣和控制許可權:
CDN 側配置(推薦):通過 CDN 控制台統一管理緩衝規則,適合營運團隊集中管理的情境。前往 CDN 控制台的缓存配置設為 0。規則生效後,CDN 收到這些路徑的請求時會直接回源 OSS,不緩衝返回結果。
OSS 側配置:為 OSS 檔案設定回應標頭,適合儲存與內容管理分離的情境。前往 CDN 控制台,確認緩衝策略優先順序為,否則 CDN 自訂規則可能覆蓋 OSS 回應標頭。確認後,進入 OSS 控制台,選擇檔案管理 > 檔案清單,選中目標檔案,按需設定 Cache-Control 值:
Cache-Control 值 | 適用情境 | 說明 |
| 推薦:每次擷取最新版本,如 HTML、設定檔、版本中繼資料 | CDN 不緩衝;瀏覽器帶 ETag 協商更新。 |
| 高敏感情境:包含使用者隱私、Token、金融資料等不應在任何環節留存的內容 | CDN 和瀏覽器均不緩衝,每次全量請求。 |
| 個人化內容:頁麵包含按使用者定製內容、不能被多使用者共用快取 | CDN 不緩衝;瀏覽器仍可緩衝。 |
以上兩種方案僅對新請求生效。如果目標檔案之前已被 CDN 緩衝,新設定不會自動清除邊緣節點上的緩衝,使用者仍會看到舊版本。必須額外執行一次 CDN 緩衝重新整理。輸入目標 URL 或目錄,重新整理後,後續請求將按新規則回源 OSS 擷取最新內容。
快取命中率低、回源頻繁如何解決?
排查方向
使用 curl -I 多次請求同一資源,觀察 Age 和 X-Cache 回應標頭。Age: 0 或 X-Cache: MISS 表示回源。
解決方案
緩衝規則 TTL 設定過短或設定為"不緩衝",適當調整緩衝規則,增加緩衝到期時間。
開啟了"忽略參數"功能,但 URL 中存在用於版本控制或圖片處理的必要參數(如
?v=1.1或x-oss-process),導致 CDN 將不同版本的 URL 視為同一資源,引發內容錯亂或功能失效,此時需要關閉忽略參數功能。來源站點回應標頭(如
Cache-Control: no-cache)指示 CDN 不緩衝。此時需要調整來源站點的緩衝策略,或者配置 CDN 不遵循來源站點緩衝策略。
快取命中率低,回源頻繁
排查方向:使用 curl -I 多次請求同一資源,觀察 Age 和 X-Cache 回應標頭。Age: 0 或 X-Cache: MISS 表示回源。
解決方案:
緩衝規則 TTL 設定過短或設定為"不緩衝",適當調整緩衝規則,增加緩衝到期時間。
開啟了"忽略參數"功能,但 URL 中存在用於版本控制或圖片處理的必要參數(如
?v=1.1或x-oss-process),導致 CDN 將不同版本的 URL 視為同一資源,引發內容錯亂或功能失效,此時需要關閉忽略參數功能。來源站點回應標頭(如
Cache-Control: no-cache)指示 CDN 不緩衝。此時需要調整來源站點的緩衝策略,或者配置 CDN 不遵守來源站點緩衝策略(配置緩衝到期時間時,開啟)。
CDN 加速的視頻連結被識別為圖片導致無法播放
原因:瀏覽器根據回應標頭中的 Content-Type 判斷資源類型。如果 OSS 中視頻檔案的 Content-Type 被錯誤設定為圖片類型(如 image/jpeg),CDN 會透傳該回應標頭,導致瀏覽器將視頻當作圖片處理。僅在 URL 後添加參數無法解決此問題。
解決方案(任選其一):
推薦方案 — 通過 CDN 修改回應標頭:登入 CDN 控制台,進入目標網域名稱的,添加一條規則,將
Content-Type強制設定為video/mp4(可按檔案尾碼名條件匹配)。來源站點修正:登入 OSS 控制台,找到對應的視頻檔案,在檔案詳情中將
Content-Type手動修改為video/mp4。
OSSBrowser 工具是否支援配置 CDN 加速網域名稱?
OSSBrowser 用戶端工具不支援配置 CDN 加速網域名稱作為自訂網域名登入,僅支援 OSS 原生 Endpoint。