本教程将指导您如何配置源站规则和 DNS 记录,以指向配置了自定义域的 R2 存储桶。
流程将使用以下示例值:
| 网站访问者将访问的 URL | mycustomerexample.com/images/* |
| R2 存储桶自定义域 | imagesbucket.example.com |
配置 R2 存储桶的自定义域时,请使用您不打算在生产环境中使用的自定义域(本示例中为 imagesbucket.example.com)。
-
在 Cloudflare 仪表板中,前往 R2 object storage(R2 对象存储) 页面。
Go to Overview ↗ -
选择您的存储桶。
-
在存储桶页面上,选择 Settings(设置)。
-
在 Public access(公共访问) > Custom Domains(自定义域名) 下,选择 Connect Domain(连接域名)。
-
输入要连接的域名——本示例中为
imagesbucket.example.com——然后选择 Continue(继续)。 -
查看将添加到 DNS 表中的新记录,然后选择 Connect Domain(连接域名)。
您的域名现已连接。状态从 Initializing(初始化中) 变为 Active(活跃) 需要几分钟,您可能需要刷新以查看状态更新。如果状态未改变,请选择存储桶旁的 ...,然后选择 Retry connection(重试连接)。
要查看已添加的 DNS 记录,请选择已连接域名旁的 ...,然后选择 Manage DNS(管理 DNS)。
在您的 mycustomerexample.com zone 中,创建具有以下配置的源站规则:
If incoming requests match(如果传入请求匹配)
| Field(字段) | Operator(运算符) | Value(值) |
|---|---|---|
| URI Path | wildcard | /images/* |
如果使用 Expression Editor,请输入以下表达式:
(http.request.uri.path wildcard "/images/*")Set origin parameters(设置源站参数)
- Host header(主机标头) > Rewrite to(重写为) 后的值:
imagesbucket.example.com - DNS record(DNS 记录) > Override to(覆盖为) 后的值:
imagesbucket.example.com
在本示例中,网站访问者访问的 URL 以 /images 开头。但是,存储在示例 R2 存储桶中的图片没有此初始 URL 段。
使用 URL 重写从 URL 路径中移除 /images 段。Cloudflare 在仪表板中提供名为 Rewrite Path for Object Storage Bucket 的规则模板,可用于配置所需的重写。
-
在 Cloudflare 仪表板中,前往 Rules Overview(概览) 页面。
Go to Overview ↗ -
选择 Create rule(创建规则) > URL Rewrite Rule(URL 重写规则)。
-
在 Rule name(规则名称) 中为规则输入描述性名称。
-
在 If incoming requests match(如果传入请求匹配) 中,选择 Wildcard pattern(通配符模式)。
-
在 Request URL(请求 URL) 中输入以下值:
https://<YOUR_HOSTNAME>/images/*在当前示例中,该值为
https://mycustomerexample.com/images/*。 -
在 Then rewrite the path and/or query(然后重写路径和/或查询) 中,在 Path(路径) 下输入以下值:
Target path Rewrite to [ /]images/*[ /]${1} -
选择 Deploy(部署)。