Avatar Proxy 和 CDN 热链保护

我讨厌含糊不清的问题。你问“这个”的时候在想什么?

这是我当前的设置:

Discourse 设置:

  • 标准单容器安装
  • 设置为子域名: forums.domain.tld
  • 标准 S3 设置用于上传
  • 上传文件保存在 S3 上

S3 设置:

  • Digital Ocean S3 存储桶
  • 存储桶已开启外部访问
  • 没有其他安全层或权限

CDN 设置:

  • bunny CDN
  • 允许的引用者设置: domain.tld 和 *.domain.tld
  • 导致头像访问被禁止的开关是“阻止直接 URL 文件访问”。

开启后,所有头像都收到 403 错误。关闭后,头像可以正常显示。

非头像图片:

  • Discourse 中的 URL: https://cdn.domain.tld/optimized/3X/3/1/filename_#_size.jpeg

头像图片:

  • Discourse 中的 URL: https://forums.domain.tld/user_avatar/forums.domain.tld/mazzini/48/776_2.png

之前的一篇帖子 头像如何存储和访问? 表明 Discourse 使用代理来处理头像。因此,头像的 URL 结构不是标准的图片 URL 结构。

在我的系统中,头像可以通过 S3 或 CDN 访问。这表明在某个地方/以某种方式,头像 URL 被转换为 CDN URL。

当这种情况发生时,CDN 会将该 URL 视为直接访问链接并以 403 错误阻止访问。

希望我回答了“这个”问题?