unteem
(Timothée Gosselin)
2022 年1 月 21 日 10:02
1
配置对象存储时,主题/帖子的预览不起作用。
Discourse 已配置为使用对象存储。
安装在 Docker 上,遵循文档。
Discourse 版本:2.8.0.beta11
这是我的 S3 配置环境变量:
DISCOURSE_CDN_URL: https://discourse.liiib.re
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: default
DISCOURSE_S3_ENDPOINT: https://hot-objects.liiib.re
DISCOURSE_S3_ACCESS_KEY_ID: ACCESS_KEY_ID
DISCOURSE_S3_SECRET_ACCESS_KEY: SUPER_SECRET_KEY
DISCOURSE_S3_CDN_URL: https://forum-beta-liiib-re.hot-objects.liiib.re
DISCOURSE_S3_BUCKET: forum-beta-liiib-re
DISCOURSE_S3_INSTALL_CORS_RULE: false
当我在浏览器检查器中查看时,markdown-it-bundle 的 URL 指向 https:https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js
它不应该在 DISCOURSE_S3_CDN_URL 前面加上 https:,因为它已经存在了。
在控制台中,我收到以下错误:
Loading failed for the <script> with source “https://discourse.liiib.re/https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js”.
我猜我的浏览器正在将 https:https://... URL 重定向到这个。
我一直在尝试查找此 URL 的设置位置,但没有成功。
如果有人能给我指明方向
感谢您的帮助
2 个赞
Benjamin_D
(Benjamin Decotte)
2022 年1 月 21 日 10:14
2
unteem
(Timothée Gosselin)
2022 年1 月 21 日 10:45
3
这也是我的猜测,我忘了提。
我不确定,因为我没有一个合适的开发环境来彻底测试所有内容,但这似乎不是问题所在。
根据我所见,script_asset_path('markdown-it-bundle') 返回了正确的 URL。而且我认为它用于构建这个看起来没问题的 meta HTML 标签。
<meta id="data-discourse-setup" data-cdn="https://discourse.liiib.re" data-base-url="https://discourse.liiib.re" data-base-uri="" data-environment="production" data-letter-avatar-version="5_c12935382690395be92856801563c2b7" data-markdown-it-url="https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js" data-service-worker-url="service-worker.js" data-default-locale="en" data-asset-version="be5bda1657984e9e27d7d3c27ab24add" data-disable-custom-css="false" data-highlight-js-path="/highlight-js/discourse.liiib.re/084d101d62e4ceb91462fa1464b341511141973f.js" data-svg-sprite-path="/svg-sprite/discourse.liiib.re/svg-1-c105fc3106297bc864bbadbd418cf380c71e3a4b.js" data-enable-js-error-reporting="true" data-color-scheme-is-dark="false" data-user-color-scheme-id="4" data-user-dark-scheme-id="1" data-s3-cdn="https://forum-beta-liiib-re.hot-objects.liiib.re" data-s3-base-url="//forum-beta-liiib-re.hot-objects.liiib.re">
似乎是 JavaScript 在 https: 前缀处添加了错误的 URL。但我找不到它来自哪里。
只有当我打开编辑器时,我才会看到一个 <script src="https:https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js"></script> 出现。
2 个赞
Falco
(Falco)
2022 年1 月 21 日 17:32
4
我认为 S3 CDN URL 是 S3 端点的一个子域,这可能行不通。你能尝试为两者使用不同的同级子域吗?
2 个赞
unteem
(Timothée Gosselin)
2022 年1 月 28 日 11:36
5
好的,我回来了。看来你是对的。
我尝试将 DISCOURSE_S3_CDN_URL 设置为存储桶子路径 https://hot-objects.liiib.re/forum-beta-liiib-re,现在可以正常工作了。
你认为允许 S3 CDN 作为 S3 端点的子域名是否合理?
在我的案例中,这可能与其他自托管设置类似,我没有使用外部 CDN(nginx 运行在 minio 之上可以被视为 CDN),因此我不需要将其设置在另一个域上。
实际上,我设置了子域名存储桶,因为我认为 Discourse 需要它来管理上传。
总之,它解决了问题,并且对我来说运行正常。感谢你的帮助!
1 个赞