오브젝트 스토어를 사용할 때 미리보기가 작동하지 않음 - 잘못된 markdown-it URL

Object Store를 구성할 때, 주제/게시물의 미리보기가 작동하지 않습니다.

Discourse가 Object Store로 구성되어 있습니다.
설치는 문서에 따라 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를 가리키고 있습니다.

이미 https:가 포함되어 있으므로 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로 리디렉션하고 있는 것 같습니다.

이 URL이 어디에서 설정되는지 찾아보려고 했으나, 실패했습니다.

누군가 올바른 방향을 알려주신다면 감사하겠습니다 :slight_smile:

도와주셔서 감사합니다

여기 있는 것 같습니다: discourse/app/helpers/application_helper.rb at 70af45055ae24dc7eb1a20678a52ed3ec69421c3 · discourse/discourse · GitHub

저도 그렇게 추측했어요. 언급을 빼먹었네요.

적절한 개발 환경이 없어서 모든 것을 철저히 테스트할 수는 없지만, 100% 확신은 못 하겠어요. 하지만 거기서 비롯된 것 같지는 않아요.

제가 확인한 바로는, script_asset_path('markdown-it-bundle')가 올바른 URL을 반환하고 있습니다. 그리고 이 값이 아래처럼 보이는 메타 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">

https: 접두사가 붙은 잘못된 URL을 삽입하는 것이 JS인 것 같습니다. 하지만 그 출처를 찾지는 못했어요.

에디터를 열었을 때만 <script src="https:https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js"></script>가 나타나는 문제가 발생합니다.

S3 CDN URL이 S3 엔드포인트의 서브도메인인 경우 작동하지 않을 것 같습니다. 두 값 모두를 동일한 수준의 서로 다른 서브도메인으로 설정해 보실 수 있을까요?

다시 돌아왔습니다. 말씀이 맞으시네요.

DISCOURSE_S3_CDN_URL을 버킷 서브패스로 https://hot-objects.liiib.re/forum-beta-liiib-re로 설정해 보았는데, 이제 정상적으로 작동합니다.

S3 엔드포인트의 서브도메인으로 S3 CDN을 허용하는 것이 합리적이라고 보십니까?

제 경우처럼 자체 호스팅 환경을 사용하는 다른 사용자들도 비슷한 상황을 겪을 수 있을 텐데, 저는 외부 CDN을 사용하지 않고 있습니다(minio 위에 nginx를 CDN으로 간주할 수 있습니다). 따라서 다른 도메인에 설정할 필요가 없습니다.

실제로 서브도메인 버킷을 설정한 이유는, Discourse가 업로드를 관리하려면 이것이 필수라고 생각하기 때문입니다.

어쨌든 문제가 해결되었고 제 환경에서는 정상 작동합니다. 도움 주셔서 감사합니다!