js 첨부 파일을 다운로드할 수 없습니다

저희도 같은 문제가 있습니다. 저희 소프트웨어에서 실행되는 js 파일들이 있는데, 브라우저에서 어떤 동작을 할 수 있는 파일들은 아닙니다.

모든 업로드 파일을 S3 버킷으로 이동하고 s3_use_cdn_url_for_all_uploads를 true로 설정함으로써 Discourse 다운로드 문제를 해결했습니다. 이는 js 파일의 치명적인 장애 요인으로 보이는 short-url 컨트롤러를 우회하는 효과가 있습니다.

상세 내용(AI가 안내해 준 내용을 바탕으로 정리):n

  1. S3 호환 스토리지 설정 (예: Cloudflare R2)

Discourse는 로컬 디스크에서 .js 파일을 안전하게 서빙할 수 없습니다. 파일을 버킷으로 이동해야 합니다.

  • 버킷: 비공개 버킷(예: my-discourse-bucket)을 생성합니다.

  • API 키: 액세스 키(Access Key)와 시크릿 키(Secret Key)를 생성합니다.

2. 커스텀 CDN 도메인 구성

Cloudflare(또는 해당 프로바이더)에서 버킷에 커스텀 도메인(예: cdn.example.com)을 연결합니다. 이를 통해 파일이 직접적인 URL을 통해 정적 자산으로 서빙되어 Discourse의 '보안 가드’를 우회하게 됩니다.

3. Discourse 설정 업데이트

관리자 → 설정에서 S3 세부 정보를 구성합니다. 중요하게는, 임시 헤더로 인해 깨질 수 있는 URL에 '서명’을 시도하지 않도록 하기 위해 다음 항목을 활성화해야 합니다:

  • s3_use_cdn_url_for_all_uploads: 이 상자를 선택하세요 (가장 중요한 단계입니다).

  • s3_cdn_url: https://cdn.example.com으로 설정합니다.

  • s3_region: R2 호환성을 위해 us-east-1을 사용합니다.

4. 기존 업로드 마이그레이션 (선택 사항)

참고: 저희는 알 수 없는 이유로 이 단계가 작동하지 않았습니다.

기존 게시물에 있는 오래된 링크를 수정하려면 컨테이너에 진입하여 다음을 실행하세요:

Bash

# /var/discourse 내부에서
./launcher enter app
rake uploads:migrate_to_s3
rake posts:rebake

이 정보가 누군가에게 도움이 되길 바랍니다.