Cloudflare R2:导航设置与处理配置错误

大家好,

我想分享一下我如何成功为我的 Discourse 论坛配置 Cloudflare R2 以进行上传和备份的经验和步骤。希望这能帮助到其他正在寻找将 Cloudflare R2 与 Discourse 一起使用的人。

设置概述:

  • 平台: Discourse (Bitnami 安装)
  • 存储桶: Cloudflare R2
  • 自定义域名: 设置用于公开提供文件
  • 配置: 完全通过 Discourse 站点设置完成(未触及任何环境变量)

分步指南:

  1. 创建 Cloudflare R2 存储桶:
    • 登录您的 Cloudflare 账户并导航到 R2 存储。
    • 为您的 Discourse 上传创建一个新的存储桶(例如,forum-uploads)。
    • 记下存储桶 S3 API URL访问密钥 ID秘密访问密钥
  2. 设置自定义域名用于 CDN:
    • 要公开提供您的 R2 存储桶内容,请在 Cloudflare 中创建自定义域名。
    • 例如,我使用了 forumfiles.example.in
    • 确保将 DNS 设置指向 Cloudflare 提供的 CNAME。由于我的域名在 Cloudflare 上,它已为我完成。
  3. 配置 Discourse 站点设置:
    • s3_bucket: 您的 R2 存储桶名称(例如,forum-uploads)。
    • s3_region: 设置为美国东部(弗吉尼亚州)。没有自动选项。
    • s3_endpoint: 使用 Cloudflare 提供的存储桶 S3 API URL(例如,https://<your-bucket-unique-id>.r2.cloudflarestorage.com)。
    • s3_access_key_id: 您的 R2 访问密钥 ID
    • s3_secret_access_key: 您的 R2 秘密访问密钥
    • s3_cdn_url: 用于 CDN 的自定义域名(例如,https://forumfiles.example.in)。
    • 确保选中启用 S3 备份启用 S3 上传
  4. 调整权限和 CORS:
    • 将您的 R2 存储桶设置为私有并配置 CORS 策略:
[
  {
      "AllowedHeaders": ["*"],
      "AllowedMethods": ["GET", "POST", "PUT", "HEAD"],
      "AllowedOrigins": ["*"],
      "ExposeHeaders": ["ETag"],
      "MaxAgeSeconds": 3000
  }
]
*   这确保了上传能够正确工作而不会出现 CORS 问题。
  1. 测试设置:
    • 通过您的 Discourse 论坛上传测试文件或图片,以验证上传是否正常工作。
    • 检查文件是否可以通过您的自定义域名访问(例如,https://forumfiles.example.in/original/1X/...)。
    • 检查备份,我已成功执行备份。在 R2 存储桶中进行了交叉检查,并且它也列在站点设置中。

结论:

通过遵循这些步骤,我能够无缝地将 Cloudflare R2 与 Discourse 集成,高效地处理上传和备份。如果您有任何问题或遇到问题,请随时提问!

6 个赞