将添加 Contabo S3 支持/兼容性吗?或者有人找到了解决方法使其生效?
我们 Discourse 维护者仅支持 AWS S3。此处列出的提供商经过我们或社区的测试,以确定它们是否实现了足够多的 S3 API 以与 Discourse 兼容。
根据 OP,@tuxed 测试了 Contabo 并发现其不足。如果 Contabo 认为符合其业务利益,那么由 Contabo 来改进其 S3 兼容性实现,而不是我们可以做到的。
这个还有 Bug 吗?为什么 Digitalocean CDN 不好?
你是否查看了链接?
看起来 CDN 不知道元数据。但你可以尝试一下,看看是否有效!如果你尝试了,请告诉我们。我前几天还在想这个问题是否已经解决了。从文档上看,我近期内不会自己去尝试了。
我正在寻找一种简单的方法来为我的 DigitalOcean 论坛添加 CDN 支持。如果 S3 更简单,我会选择该选项。
不想冒险使用之前未正常工作的设置。
推荐的解决方案就是不使用他们的 CDN。您可以按照上面的说明使用 Spaces,并使用 bunny.net 之类的服务作为 CDN。它便宜又简单。
Aws S3 是 cdck 使用的,因此经过了更好的测试和支持,但除非您已经熟悉 AWS,否则 Spaces 存储桶是一个不错的解决方案。只是不要使用 DigitalOcean 的 CDN。
我刚经历过这个——CDN 设置,暂时将图片保留在本地——先是 Fastly,然后是另一个我不记得了。最终选择了 bunny.net。设置非常简单。他们有针对 Discourse 的操作指南。我们是自托管在 DO 上的,有 100GB 以上的图片。缓存命中率为 65%,并且还在增长。
s3 配置墓碑策略仅在 aws.amazon 上生效?
不。这只是 Backblaze 的一个问题。
3 个帖子被拆分到一个新主题:探索用户个人资料图片上传问题的解决方案
呼,我该从哪里开始呢?我正在使用 Cloudflare 进行缓存和 DNS,并使用 Backblaze B2 进行存储。我设法让它部分生效了。在执行 ./launcher rebuild app 时,我看到它在上传资源,所以我非常兴奋,以为它正在正常工作。在成功重建后,我无法访问该网站。我只在页面中间看到一些移动的点。
根据 Backblaze 的文章 通过 Cloudflare CDN 提供公共 Backblaze B2 内容,我已经设置了一个代理 CNAME 记录,指向名为 gtech-cdn 的友好 URL 源 f000.backblazeb2.com。
CNAME gtech-cdn –\u003e f000.backblazeb2.com
文章还提到了页面规则;我尝试过打开和关闭它们,但都没有效果。
以下是相关的配置项:
DISCOURSE_HOSTNAME: mmhmm.com
DISCOURSE_CDN_URL: https://mmhmm.com
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: us-west-000
DISCOURSE_S3_ENDPOINT: https://s3.us-west-000.backblazeb2.com
DISCOURSE_S3_ACCESS_KEY_ID: <secret>
DISCOURSE_S3_SECRET_ACCESS_KEY: <secret>
DISCOURSE_S3_CDN_URL: https://gtech-cdn.mmhmm.com
DISCOURSE_S3_BUCKET: gtech-uploads
DISCOURSE_S3_BACKUP_BUCKET: gtech-uploads/backups
DISCOURSE_BACKUP_LOCATION: s3
在 **hooks:** 部分...
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
让我感到困惑的一件事是,在 DISCOURSE_S3_CDN_URL 和 DISCOURSE_CDN_URL 这两个变量中应该填什么。根据我提供的信息,我的设置是否正确?
查看浏览器的开发者工具控制台,我收到了关于 .js 脚本的 404 错误。URL 似乎没有正确构建。它不应该在 /assets 之前有 /file/ 吗?如果我手动添加它以创建正确的 URL,它就可以工作:
https://gtech-cdn.mmhmm.com/file/gtech-uploads/assets/google-universal-analytics-v4-e154af4adb3c483a3aba7f9a7229b8881cdc5cf369290923d965a2ad30163ae8.br.js
感谢任何帮助,非常感激!!!
https://gtech-cdn.mmhmm.com 无法解析,所以这是需要修复的第一件事。
我不确定您是否可以像那样使用 Cloudflare 作为 CDN,但也许我错了。
抱歉,我本应提到 mmhmm.com 是一个虚假域名。它确实响应 ping 请求。
至于 Cloudflare 不能用作 CDN,我想我没明白。我链接的文章清楚地说明了将其用作 CDN。如果事实并非如此,那么,在两个变量 DISCOURSE_S3_CDN_URL 和 DISCOURSE_CDN_URL 中应使用什么值?
祝好,
如果您提供虚假网址,您只能得到虚假答案。
网址是否提供预期数据?您能从论坛网址检索它吗?
我认为 s3 cdn 应该可以工作。它正在使用论坛网址作为论坛 cdn,但我对此不确定。
普通的 cdn 与论坛的网址不同,并且 cdn 可以依赖静态数据,而不必猜测哪些是动态的。
我已尽力不将我的信息散布到各种论坛,因此请原谅我在这件事上的保密。\n\n论坛位于“https://mmhmm.com”,这是一个被代理(缓存)的 Cloudflare DNS 记录。在将 Discourse 配置为使用 Backblaze 之前,一切都运行正常。\n\n如前所述,“https://gtech-cdn.mmhmm.com”可以解析并且响应 ping。CNAME 记录的目标 f000.backblazeb2.com 也可以解析。该 B2 友好 URL 源是文章指示您使用的。但这并不是问题所在。问题在于 Discourse 为 .js 文件提供的 URL 使用了无效的 URL,因为它缺少路径中的“/file/gtech-cdn”部分,所以永远无法正常工作。如果您获取其中一个不完整的 .js URL 并手动添加缺失的信息,它就可以正常加载 .js 文件的文本。\n\n当然,我仍在努力理解所有这些是如何与这两个变量一起工作的。我更倾向于视觉学习,因此我非常需要一个流程图或类似的东西来帮助我理解 Cloudflare CDN、Discourse 和 Backblaze B2 之间的交互应该如何进行。\n\n感谢您的帮助。
哦,我还会尝试解决你关于普通 CDN 的最后一句话……
Backblaze 的文章让你为每个存储桶创建两个页面规则(在我的例子中,我只使用 1 个存储桶),如果我理解正确的话,这在某种程度上类似于防火墙规则的处理方式。
规则 1 表示 https://gtech-cdn.mmhmm.com/file/*/* 应使用标准缓存(在 Cloudflare 中设置为 1 个月)
规则 2 将任何不匹配规则 1 模式的内容重定向(302 - 临时重定向)。
所以,至少据我所理解,并不是所有内容都会通过访问 mmhmm.com 来缓存。
编辑:此方法无效。
仔细考虑后,我决定出于显而易见的原因,使用 S3 URL 作为 CNAME 目标,而不是 Backblaze 文章建议的友好 URL。我现在正在等待 DNS 记录的 TTL 过期。
关于这个钩子:
我在 rake --tasks 转储中没有看到任何与 s3 相关的内容。这是否仍然相关,还是我遗漏了某个插件?
另外,当我手动运行时,看到这个:
uploads:migrate_to_s3
rake aborted!
FileStore::ToS3MigrationError: Some uploads could not be migrated to the new scheme. You need to fix this manually. (FileStore::ToS3MigrationError)
/var/www/discourse/lib/file_store/to_s3_migration.rb:156:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:59:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:126:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:106:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-6.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-6.0.0/lib/rails_multisite/connection_management/null_instance.rb:36:in `each_connection'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-6.0.0/lib/rails_multisite/connection_management.rb:21:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:104:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:100:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => uploads:migrate_to_s3
(See full trace by running task with --trace)
root@ubuntu-s-2vcpu-4gb-nyc2-01-app:/var/www/discourse#
root@ubuntu-s-2vcpu-4gb-nyc2-01-app:/var/www/discourse# rake uploads:migrate_to_s3
Please note that migrating to S3 is currently not reversible!
6 个帖子已拆分为新主题:Cloudflare R2:设置导航和处理配置错误
Cloudflare 现在似乎可以正常工作了:
请参阅 Cloudflare R2: Navigating Setup and Handling Configuration Errors - #13 by pfaffman


