早期の一篇の記事《Backblaze B2、低価格のオブジェクトストレージ、CloudFlare CDN への接続をサポート》では、Backblaze B2 を CloudFlare CDN に接続するためのチュートリアルが紹介されましたが、1 つの欠点があります。B2 のドメイン名がバケット名を露出させてしまい、あなたの CloudFlare 加速ドメインが誰でも Backblaze B2 を加速したり、直接ソースにアクセスして不正利用される可能性があるため、非常に不親切であり、安全ではありません。
例を挙げると:
B2 が提供するドメイン形式は:https://f002.backblazeb2.com/file/bucket/xxx.txt
CloudFlare で加速後のドメインはhttps://b2.domain.com/file/bucket/xxx.txt
もし私が B2 でバケット名を 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/ を除去できることがわかります。
不要なレスポンスヘッダーの削除
Backblaze B2 はリクエストのレスポンスヘッダーに以下のヘッダーを追加します:
x-bz-content-sha1
x-bz-file-id
x-bz-file-name
x-bz-upload-timestamp
影響は大きくありませんが、これらのパラメータを見ると B2 を使用していることがわかり、これらのパラメータは一般的に役に立たないため、CloudFlare の書き換えルールを使って削除することができます。
変換ルールのところで - 変換ルールの作成 - レスポンスヘッダーの変更。
ホスト名は上記と同じです:
そこではすべて “Remove” を選択し、最後に上記のヘッダーを記入すれば大丈夫です。
まとめ
CloudFlare と Backblaze B2 間の転送トラフィックは無料であり、CloudFlare の変換ルールを使用することでバケット名を隠し、URL をより親しみやすくし、同時に Backblaze B2 の不正利用のリスクをある程度防ぐことができます。