CJW

CJW 个人博客

分享网络知识和知识记录
github
email

通過CloudFlare轉換規則隱藏Backblaze B2的bucket路徑

在早期的一篇文章《Backblaze B2,低價的對象存儲,支持接入 CloudFlare CDN》介紹了 Backblaze B2 接入 CloudFlare CDN 的教程,但存在一個缺陷,B2 的域名會將 bucket 名稱暴露出來,會導致你的 CloudFlare 加速域名任何人都可以用來加速 Backblaze B2 或者直接訪問源站進行盜刷,不僅不友好,還不安全。

舉個例子:

B2 提供的域名格式為:https://f002.backblazeb2.com/file/bucket/xxx.txt
使用 CloudFlare 加速後域名為https://b2.domain.com/file/bucket/xxx.txt
假如我在 B2 創建了一個 bucket 名稱為 xiaoz,那麼我就可以訪問你的 CloudFlare 域名https://b2.domain.com/file/xiaoz/xxx.txt,從而導致佔用你的 CloudFlare 流量。

或者我直接訪問你的源站:https://f002.backblazeb2.com/file/xiaoz/xxx.txt 進行流量盜刷。

這篇文章的目的就是去掉 B2 極其不友好的 URL 路徑,隱藏 file/bucket/ 這一串內容。

前提準備
如果您的 B2 域名還未接入 CloudFlare,請參考這篇文章:https://blog.xiaoz.org/archives/13256 進行接入。

創建轉換規則
CloudFlare 後台 - 規則 - 轉換規則 - 創建轉換規則 - 重寫 URL

繼續填寫:

規則名稱:隨便寫
字段:選擇 "主機名"
運算符:選擇 "等於"
值:填寫您在 CloudFlare 上對 B2 的加速域名(你自己的域名)

然後路徑選擇 "重寫到 - 選擇 Dynamic",並填寫:

concat("/file/bucket", http.request.uri.path)
其中 bucket 改成你自己的存儲桶名稱,然後選擇部署就行了。

優化後
優化前我們的訪問路徑為:https://b2.domain.com/file/bucket/xxx.txt

優化後的路徑為:https://b2.domain.com/xxx.txt

可以看出去除了 file/bucket/

去除不必要的響應 Header
Backblaze B2 會在請求的響應頭中添加以下幾個 header 參數:

x-bz-content-sha1
x-bz-file-id
x-bz-file-name
x-bz-upload-timestamp
雖然影響不大,但是一看這些參數就知道你用的 B2,並且這些參數頭一般拿來也沒啥用,我們也可以通過 CloudFlare 的重寫規則將其去掉。

依然在轉換規則那裡 - 創建轉換規則 - 修改響應頭。

主機名那些和上面的一樣:

然後那裡全部選 "Remove",最後填寫上面那幾個 header 頭部即可。

總結
CloudFlare 與 Backblaze B2 之間的傳輸流量是免費的,通過 CloudFlare 轉換規則可以隱藏 bucket 名稱,讓 URL 更加友好,同時一定程度上防止了 Backblaze B2 被盜刷的風險。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。