2026年9月30日 · 閱讀時間 5 分鐘

如何公開 Cloudflare R2 儲存貯體

R2 儲存貯體預設是私人的。在你明確為儲存貯體設定公開位址之前,沒有經過簽署的 API 請求,誰都讀不到任何檔案。設定方式有兩種,而且可以同時使用。

方法一:連接自訂網域(建議)

自訂網域會透過 Cloudflare 的網路並搭配快取來提供儲存貯體的內容,之後也能套用 WAF 規則或 Cloudflare Access。這個網域必須是與儲存貯體同一個 Cloudflare 帳號下的 zone(完整設定或部分 CNAME 設定都可以)。

  1. 在 Cloudflare 主控台前往 R2 Object Storage,並選擇你的儲存貯體。
  2. 開啟 Settings,找到 Custom Domains,然後選擇 Add。
  3. 輸入子網域,例如 files.example.com,然後選擇 Continue。
  4. 檢查 Cloudflare 將建立的 DNS 記錄,然後選擇 Connect Domain。

幾分鐘內,狀態就會從 Initializing 變成 Active。之後,物件鍵為 2026/09/report.pdf 的物件就能透過 https://files.example.com/2026/09/report.pdf 存取。

方法二:啟用 r2.dev Public Development URL

如果只是想快速測試,R2 可以為儲存貯體提供一個由 Cloudflare 管理的位址:

  1. 開啟儲存貯體的 Settings。
  2. 在 Public Development URL 下選擇 Enable。
  3. 輸入 allow 確認,然後選擇 Allow。

現在就能透過 https://pub-<id>.r2.dev/<key> 存取儲存貯體。Cloudflare 會限制這個 URL 的速率,並表示它僅供開發使用,所以在廣泛分享連結之前,請改用自訂網域。不支援把你自己的 CNAME 指向 r2.dev 位址。

公開存取會開放什麼、不會開放什麼

  • 唯讀。公開存取只讓任何人讀取他們知道物件鍵的物件。上傳和刪除仍然需要 API 憑證。
  • 不會列出目錄。造訪網域的根目錄不會列出儲存貯體內容。隨機的物件名稱讓連結難以被猜到。
  • 整個儲存貯體都會公開。存取權限是以儲存貯體為單位,而不是以資料夾為單位。私人檔案請放在另一個儲存貯體。
  • 快取。Cloudflare 預設只會快取特定副檔名的檔案。如果希望所有檔案類型都被快取,請加入快取規則。

解決 R2 連結出現 Access Denied 的問題

如果連結傳回 Access Denied、401 或 403,請依序檢查:

  1. 連結使用的是你的自訂網域或 r2.dev URL,而不是 <account-id>.r2.cloudflarestorage.com。那個主機是 S3 API,一定需要簽署。
  2. 自訂網域顯示為 Active,而且在儲存貯體的設定中,對儲存貯體的存取為 Allowed。
  3. URL 中的物件鍵與物件完全相符,包括資料夾與大小寫。

常見問題

把 R2 儲存貯體公開安全嗎?

對你本來就打算分享的檔案來說是安全的。任何拿到連結的人都能讀取那個檔案,但無法列出儲存貯體內容、上傳或刪除。私人資料請放在另一個儲存貯體。

公開的 R2 儲存貯體會比較貴嗎?

不會。R2 不收輸出流量費用,所以公開下載不會增加頻寬成本。讀取會算作 Class B 操作,每月有免費額度。

可以只公開一個資料夾嗎?

R2 的公開存取做不到,因為它套用於整個儲存貯體。請另外使用一個儲存貯體,或讓儲存貯體保持私人並分享預先簽署的 URL。