前言

Backblaze B2 Storge 免費額度

存儲容量:10 GB

網絡流量:1 GB/天

上傳流量:無限

B 類操作:2500 次/天

Bucket:100 個

b2_download_file_by_name 为 B 類操作

但是由於 Cloudflare 的 Bandwidth Alliance(帶寬聯盟)中包含了 Backblaze,因此 Cloudflare 與 Backblaze 之間的流量是免費的,另外通過 Cloudflare 的緩存也可以減少請求數

配置 Backblaze

創建庫

登錄 Backblaze

創建一個 Bucket

名稱盡量確保不易被別人猜測到

確保類型為 public,除非這是你的私有庫

獲取主機名

上傳任意一個文件,用於獲取 Bucket 所在地址

查看詳細信息

記住 Friendly URL 中的主機名,例如我的是 f004.backblazeb2.com

設置 Bucket

Bucket Settings 中的 Bucket Info 填寫 {"cache-control":"max-age=86400"}

這意味著 86400 秒(也就是 24 小時)内 Cloudflare 不再返回源站重新获取信息

max-age 不宜太長或太短

CORS Rules 中設置為 Share everything in this bucket with all HTTPS origins

配置 Cloudflare

添加 DNS 記錄

登錄 Cloudflare

進入一個域名,添加一條 DNS 記錄,CNAME 解析到 Bucket 的主機名

將 SSL/TLS 中的加密方式改為 Full 或 Full(strict)

這一步是必要的,因為 Backblaze 僅支持 HTTPS 連接,Cloudflare 將通過 HTTPS 回源

現在就可以通過你的域名訪問 Bucket 了

格式:https://example.com/file/bucket/filename

bucketfilename 替換為你的 Bucket 名稱及文件名

但是直接使用別人就可以直接獲取到你的 Bucket 名稱

Headers 中也會暴露出你的 Bucket 信息

可以通過 Cloudflare 中的 Transform Rules 重寫 URL 以及去除這些 header

重寫 URL

轉到 Rules 中的 Transform Rules

創建一條 Rewrite URL 的規則

  • Field: Hostname
  • Operator: equals
  • Value: example.com

And

  • Field: URI Full
  • Operator: does not contain
  • Value: https://example.com/file/bucket/

example.com 替換成你的域名,bucket 替換成你的 Bucket 名稱

匹配主機名用於確定請求來源需要進行重寫,且再次匹配完整 URI 確認不包含已經重寫過的鏈接,避免出現反復重寫的錯誤。

Then

Rewrite to… 選擇 Dynamic

填寫 concat("/file/bucket", http.request.uri.path)

bucket 替換為你的 Bucket 名稱

去除響應頭

另外創建一條 Modify Response Header

  • Field: Hostname
  • Operator: equals
  • Value: example.com

下面設置需要去除的 header

  • Expires
  • X-Bz-Upload-Timestamp
  • x-bz-content-sha1
  • x-bz-file-id
  • x-bz-file-name
  • x-bz-info-src_last_modified_millis

優化後 https://example.com/filename

設置 WAF

轉到 Cloudflare 的 WAF

設置一條防盜鏈規則

設置頁面規則

設置一條規則保證 Cloudflare 固定時間返回源站獲取信息

使用 PicGo 上傳

Backblaze 中增加一條 App Key

最長有效時間為 86400000 秒,即 1000 天

記住你的 Bucket 信息中的 Endpoint

PicGo 安裝 S3 插件

填寫信息

自定義節點填寫上面的 Endpoint