如何使用 Backblaze 和 Cloudflare 搭建免费 CDN - 让白-piao进行到底

本文介绍如何利用Backblaze的B2存储服务和Cloudflare的CDN搭建一个免费、快速且安全的10GB图像托管网站。通过隐藏存储桶名称和使用Cloudflare Workers进一步定制URL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Backblaze 和 Cloudflare 之间的合作伙伴关系可以将内容存储在 Backblaze 的 B2 存储服务上,并根据需要自动将其馈送到 Cloudflare 的 CDN。本文通过使用 Cloudflare 转换规则处理 Backblaze B2 云存储的图像托管,从而获得一个免费的、快速的、友好 URL 和安全的 10GB 图像托管网站。

bb-bh-Free-Image-Hosting-with-Cloudflare-Transform-Rules-and-Backblaze-B2_Design-D.jpg

Backblaze B2 是一种 IaaS 服务,以合理的价格提供无限的云存储。用户可以免费使用 10 G。Cloudflare 向客户提供基于反向代理的内容分发网络及分布式域名解析服务。

配置 CDN

1.登录 Backblaze B2(可以直接使用 Google 帐号);

2.创建一个公开的存储桶(Bucket)并上传文件;

3.在存储桶设置的桶信息中写入 {"cache-control":"max-age=720000"},设置缓存控制时间;

4.通过查看文件详细信息获得文件地址,如;

https://f004.backblazeb2.com/file/<存储桶名称>/<文件夹名称>/<文件名称>

3-1024x865.jpg

5.登录 Cloudflare

6.在某域名下(如果没有就注册一个,或者转入一个)进入 SSL/TLS,确保 Cloudflare 以 FULL 模式对源使用 SSL(Backblaze B2 仅支持 HTTPS 连接);

6-1024x681.jpg

7.在同域名下新建一条 CNAME 解析,创建一个该域名的子域,目标地址 f004.backblazeb2.com(与文件详细中的文件地址域名相同);

8.在同域名下的 Rules > Page Rules 中配置页面规则以仅允许从您的域中获取您的存储桶;

https://<解析的域名>/file/<存储桶名称>/* # 设置:缓存级别 - 缓存所有内容

9.同步设置另一条规则,重定向到某个 404 页面;

https://<解析的域名>/file/*/* # 设置:重定向 URL - 302 服务器

完成后,文件地址可通过以下地址访问:

https://<解析的域名>/file/<存储桶名称>/<文件夹名称>/<文件名称>

隐藏存储名


以上借助 Cloudflare CDN,隐藏了您使用的 Backblaze B2 图床域名,但仍旧暴露存储桶名。

1.进入 Worker > 创建服务,添加一个 Worker;

2.部署以下内容,修改 b2Domain 和 b2Bucket 两个变量:

代码请下载文本文件:b2.txt 。

3.添加路由,地址为<解析的域名>/*,Worker 选择前面添加的 Worker。

4.完成后,文件地址可通过以下地址访问:

https://<解析的域名>/<文件夹名称>/<文件名称>

注意:

1.Backblaze B2 前 10GB 的存储空间是免费的,每天下载的前 1GB 数据是免费的,更多请关注其定价规则;

2.Cloudflare CDN 的许多基础服务是免费的,更多请关注其定价规则;

3.由于具体实现可能有不同的方式,以及发生更改,本文及链接资源不保证是最新可用的,请密切关注官方说明。

测试页面 sayacintamu.com 引用了 Backblaze B2 图床的两张图片,其地址完全按上述实践处理。同时,它基于 Cloudflare Pages 部署,本文最后一节将介绍更多 Cloudflare 的用法。


上传文件


上传文件到 Backblaze B2 Cloud Storage,您可以使用 B2 的网页界面,最大文件大小为 500 MB;或者一些软件,通过像传统 FTP 一样上传文件。

Upload button.png

首先在 B2 后台获得一个 Key ID 和 App Keys(Application Keys),为其他软件的连接提供验证。注意,App Keys只会在创建成功时出现一次。

Cyberduck

CDUP.png

Cyberduck 是一款适用于 Mac 和 Windows 的自由服务器和云存储浏览器,支持FTP、SFTP、WebDAV、Amazon S3、OpenStack Swift、Backblaze B2、Microsoft Azure 和 OneDrive、Google Drive和Dropbox。Cyberduck 是 Backblaze B2 集成的第三方服务,因此首先会提到它。

CloudBerry Explorer

CloudBerry Explorer 允许跨本地存储和云存储访问、移动和管理文件,支持Amazon S3、Google Cloud、Microsoft Azure 或其他流行的存储选项。

DropShare

DropShare支持同步到 Dropshare Cloud 和 23 个自定义云提供商(其实还包含所有符合 S3 API 的服务)。


Cloudflare


e9315659-7f28-4363-94e6-296d89f25443.jpg

Cloudflare 是一间总部位于旧金山的美国跨国IT企业,以向客户提供基于反向代理的内容传递网路(Content Delivery Network, CDN)及分布式域名解析服务(Distributed Domain Name Server)为主要业务。Cloudflare 可以帮助受保护站点抵御包拒绝服务攻击等网络攻击,确保该网站长期在线,同时提升网站的性能、载入速度以改善访客体验。

常有一些小微网站通过 Cloudflare 的动态域名解析和内容分发网络免费服务,对网站进行CDN加速并提高可靠性和安全性。但用户需要将域名的名称服务器(NS))指向 Cloudflare,并且免费的 CDN 的节点都是美国,如果网站的主要用户在国内,访问速度可能不升反降。

Cloudflare Pages

Cloudflare Pages

Cloudflare Pages 允许免费部署静态网页,这和 GitHub Pages 类似,但后者似乎更受欢迎。

其他

在以上方案中,应用了 Backblaze B2 对象存储服务(Object Storage Service,OSS)和 Cloudflare 内容分发网络(Content Delivery Network,CDN),Azure、AWS 也提供雷同服务。

类似的国内服务商也非常多,如阿里云 OSS 和 阿里云 CDN,您安全可以参照本文的流程在阿里云上搭建一个OSS和与之配套的CDN。其他还有腾讯、百度、又拍云、七牛云等,一些服务商可能使用云存储、云加速这样的术语。许多个人网站使用又拍云、七牛云来建立“图床”,因为它们都有好用的免费服务,从而降低了降低了存储和流量费用,这样可以节省 Web 服务器的投入。

好的,STM32F103C8T6 使用标准库读取 VL53L0X 测距传感器的数据涉及多个步骤。VL53L0X 是一款基于飞行时间 (ToF) 技术的距离测量传感器,能够精确地测量物体距离。 ### 硬件连接 首先需要将 VL53L0X 和 STM32 进行硬件连接: | **VL53L0X 引脚** | **STM32 引脚** |-------------------|------------------- | VCC | 3.3V 或者通过稳压电路提供的电压 | GND | GND | SCL | I²C_SCL | SDA | I²C_SDA 确保您的接线图准确无误,并且电源稳定可靠。 ### 软件配置 接下来,在软件上我们需要做以下几件事: #### 1. 初始化I2C外设 使用 STM32 标准库初始化 I2C 接口,通常会创建一个包含特定设置的结构体并调用 `I2C_Init` 函数完成初始化过程。 ```c #include "stm32f1xx_hal.h" // 定义全局变量用于保存I2C句柄. static I2C_HandleTypeDef hi2c1; void MX_I2C1_Init(void) { __HAL_RCC_I2C1_CLK_ENABLE(); // 配置I2C参数. hi2c1.Instance = I2C1; hi2c1.Init.ClockSpeed = 400000; // 设置传输速度为400kHz hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c1.Init.OwnAddress1 = 0xFF; hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c1.Init.OwnAddress2 = 0; hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; HAL_I2C_Init(&hi2c1); } ``` #### 2. 加载 VL53L0X 库文件 从 STMicroelectronics 的官网上下载适用于 STM32 平台的 VL53L0X 固件包,解压缩并将必要的头文件和源代码添加到项目中。 #### 3. 编写主程序逻辑 编写应用程序的主要部分,包括初始化 VL53L0X 模块、启动测距操作以及获取结果等。 ```c #include <vl53l0x_api.h> VL53L0X_Error Status; uint8_t status_int = GPIO_PIN_SET; int distance_mm = -1; void setup() { // 初始化系统时钟和其他外围设备... // 初始化I2C通信接口. MX_I2C1_Init(); // 初始化VL53L0X模块. if ((Status = vl53l0x_init()) == 0) { printf("VL53L0X Initialization Success\n"); // 开始连续测距模式. if((Status = vl53l0x_start_continuous(5)) == 0){ printf("Continuous Ranging Start Successful.\n"); } else { printf("Failed to start continuous ranging!\n"); } }else{ printf("VL53L0X Initialization Failed.\n"); } } while (true) { // 获取最新的测量值. distance_mm = vl53l0x_get_distance(); if(distance_mm > 0 && distance_mm <= MAX_DISTANCE_MM){ printf("Distance is %d mm \r\n",distance_mm); } delay_ms(1000); // 延迟一秒再下一次检测 } // 具体实现细节参考官方文档及API手册. ``` 注意:上述代码片段仅为示例用途,实际应用还需要结合具体的环境条件做出调整优化;另外还需查阅相关资料了解如何处理异常情况下的错误恢复机制等问题。 --- ### 相关问题:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值