CDN 加速 OBS 圖床
上一篇用華為雲 OBS 搭好了個人圖床:建桶、上傳、桶策略開放匿名讀取、防盜鏈都跑通了。但直接拿 OBS 桶域名當圖片連結,讀者每次都要回到桶所在的區域拉圖,距離一遠就慢,跨網訪問更卡。這一篇就把 CDN 接上去:用自己的加速域名對外提供圖片,讓邊緣節點就近回應,OBS 只負責當源站。
一、為什麼圖床需要 CDN
圖床圖片的特點是小檔案、高讀取量,而且讀者可能分布在各地。只用 OBS 直鏈會有三個問題:
- OBS 直鏈回源慢:每一次請求都要回到桶所在區域取圖,讀者離桶越遠,首字節時間越長,文章裡十幾張圖就會一張一張慢慢出現。
- 跨網訪問卡:不同營運商、不同地區到 OBS 機房的路徑品質不一樣,晚高峰更容易卡頓。
- 流量費用不好控:所有請求都直接打到 OBS,熱門文章一來,流出流量跟著暴漲;被盜鏈時也一樣,費用由桶主承擔。
CDN 的做法是把圖片快取到離讀者最近的邊緣節點,命中快取的請求不用回源站,載入快、源站壓力小,也更容易搭配防盜鏈與 HTTPS 統一管理。
二、開通 CDN、添加加速域名,以 OBS 桶域名為源站
操作流程大致如下:
- 在華為雲控制台開通內容分發網絡 CDN 服務。
- 進入 CDN 控制台的「域名管理」,點「添加域名」。
- 加速域名填自己的域名,例如
img.example.com,並按提示完成域名解析,把該域名 CNAME 到 CDN 分配的加速域名。 - 業務類型選擇適合圖片場景的類型,例如圖片小文件。
- 源站類型選擇「源站域名」,填寫 OBS 桶域名,格式為
桶名.obs.區域.myhuaweicloud.com,例如my-blog-images.obs.cn-north-4.myhuaweicloud.com。
要注意:加速域名要填自己的域名,不是填 OBS 桶域名;OBS 桶域名是放在源站位置的。添加後先等域名狀態變為「已啟用」,再用加速域名訪問一張已上傳的圖片,能正常顯示才算接通。
三、回源配置:源站選 OBS 桶域名,回源協議跟隨或 HTTPS
源站接通後,重點檢查回源配置:
- 源站:保持為 OBS 桶域名,不要改成源站 IP,OBS 不提供固定源站 IP。
- 回源協議:建議選擇「跟隨」,即讀者用 HTTP 訪問就 HTTP 回源,用 HTTPS 訪問就 HTTPS 回源;如果加速域名已配置 HTTPS,也可以直接選擇 HTTPS 回源,讓 CDN 到 OBS 之間全程加密。
- 回源 HOST:建議設為源站域名,也就是 OBS 桶域名。CDN 回源時帶的 HOST 決定了 OBS 認為請求的是哪個桶,設錯了容易回 403。
改完回源配置後,用瀏覽器無痕視窗打開一張圖片的加速域名連結驗證一次;若出現 403,先檢查 OBS 桶策略是否仍開放匿名讀取,再檢查回源 HOST 與桶域名是否一致。
四、緩存配置:圖片後綴緩存時長、忽略 URL 參數
圖片內容不常變,適合長時間緩存。在 CDN 控制台的域名「緩存配置」裡可以這樣設:
- 按文件後綴設緩存時長:
jpg、jpeg、png、gif、webp、svg、avif、ico等圖片後綴,緩存時長可以設長一點,例如 30 天;html這類會變動的內容則設短或不緩存。 - 忽略 URL 參數:開啟後,
logo.png?v=1與logo.png?v=2會被視為同一個緩存對象,只存一份,緩存命中率更高。要注意的是,如果圖片是靠 URL 參數做不同尺寸裁切的,就不要開啟,否則不同參數會拿到同一張圖。 - 緩存遵循源站:若 OBS 端已設置了緩存策略,也可以選擇遵循源站,CDN 按源站返回的緩存頭決定緩存時間。
圖片更新後不要只換內容不換檔名:要嘛改檔名重新上傳,要嘛用 CDN 的刷新功能清掉舊緩存,否則讀者看到的還是舊圖。
五、防盜鏈 Referer 配置,並與 OBS 桶策略配合
圖床公開之後,最怕別人直接引用你的圖片連結,流量費由你出。CDN 與 OBS 要分工配合:
- CDN 防盜鏈:在加速域名的「防盜鏈」配置中開啟 Referer 防盜鏈,設置白名單,只允許自己的博客域名與華為雲社區域名,例如
*.example.com、bbs.huaweicloud.com。建議允許空 Referer,否則讀者在瀏覽器地址欄直接打開圖片也會被擋住。 - OBS 桶策略:保持上一篇的做法,桶策略只開放匿名讀取,不開放寫入與刪除。CDN 的防盜鏈只對加速域名生效,不能替代桶策略。
- 統一用加速域名:文章裡只貼加速域名的圖片連結,不要再貼 OBS 桶域名直鏈。直接訪問 OBS 桶域名是不經過 CDN 的,CDN 的防盜鏈也管不到它。
設置完成後,用一個不在白名單的頁面引用圖片測試,應該被拒絕;再用自己的博客頁面打開,圖片正常顯示才算通過。
六、HTTPS:CDN 證書配置與 OBS 桶域名證書
圖片連結走 HTTPS,才能避免瀏覽器報不安全,也才能與全站 HTTPS 的博客正常混用:
- CDN 證書配置:在加速域名的「HTTPS 配置」中開啟 HTTPS,證書來源可以選擇雲證書管理 SCM 中的證書,也可以上傳自有證書。已有免費 DV 證書的,可以直接在 SCM 中選用對應域名的證書。
- 強制跳轉:建議開啟 HTTP 到 HTTPS 的強制跳轉,讓舊的 HTTP 圖片連結自動跳到 HTTPS,避免混合內容問題。
- OBS 桶域名證書:OBS 桶域名本身支持 HTTPS 訪問,回源協議選 HTTPS 時,CDN 到 OBS 之間也是加密傳輸,不需要另外給桶域名配證書。
證書到期前記得在 SCM 續期或更換,證書過期會導致加速域名無法正常訪問。
七、驗證與費用:刷新預熱、訪問測速對比、賬單注意點
接好之後要驗證效果,也要看緊費用:
- 刷新預熱:圖片更新後,在 CDN 控制台用「刷新預熱」功能,URL 刷新針對單張改過的圖,預熱則是把熱門圖片提前推到邊緣節點。目錄刷新影響範圍大,操作前要確認目錄。
- 訪問測速對比:用瀏覽器開發者工具或
curl -I訪問同一張圖的加速域名與 OBS 直鏈,對比載入時間;也可以查看響應頭,確認是否命中邊緣緩存。命中緩存時回應更快,回源次數也更少。 - 賬單注意點:CDN 主要按流量計費,另有請求數等費用;CDN 回源從 OBS 拉取圖片時,OBS 端也會產生流出流量費用。建議在費用中心設置用量告警,定期查看 CDN 與 OBS 的流量賬單,熱門文章發布前先確認餘量。
小結
給 OBS 圖床接 CDN,核心就五步:開通 CDN 並添加加速域名、以 OBS 桶域名為源站、配好回源協議與回源 HOST、按圖片後綴設好緩存、再用 Referer 防盜鏈與 HTTPS 把訪問管起來。接通後文章裡的圖片連結全部換成加速域名,讀者就近取圖,速度與費用都更好控。
下一篇:ECS 安全組配置實戰。
- 点赞
- 收藏
- 关注作者
评论(0)