문제 요약
라이브 Discourse 사이트(https://techenclave.com)에서 이미지 업로드 URL을 통해 접근할 때 404 오류가 발생합니다. 그러나 이미지는 디스크에 존재하며 내부적으로 정상적으로 서빙되고 있습니다. 게시물을 다시 베이킹(rebake)하고 앱을 재시작했으며 내부 서빙이 정상적으로 작동하는 것을 확인했지만, 외부에서는 여전히 404 오류가 발생합니다.
정상적으로 작동하는 부분
1. DB에 업로드 존재
Rails 콘솔을 사용하여 업로드가 모든 올바른 메타데이터와 함께 존재하는지 확인했습니다:
Upload.find_by(sha1: 'a8fbe877e685e6a6994532c946c446b1279da7d2')
출력에는 다음이 포함됩니다:
url: "/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg"- 파일명:
IMG202506252257011.jpg - ID:
170265 - 사용된 게시물 ID:
3125774
2. 디스크에 파일 존재
컨테이너 내부에 파일이 존재하는지 확인했습니다:
ls -l /shared/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg
파일이 올바른 소유권과 권한으로 존재합니다:
discourse:www-data, -rw-r--r--.
3. 공개 폴더에서 심링크 정상 작동
public/uploads 심링크가 온전합니다:
ls -l /var/www/discourse/public/uploads
# => /shared/uploads
4. Discourse가 내부적으로 서빙 가능
다음으로 테스트했습니다:
curl -I http://localhost:3000/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg
결과: HTTP/1.1 200 OK
5. 게시물 다시 베이킹
다음으로 게시물을 다시 베이킹했습니다:
Post.find(3125774).rebake!
6. 앱 재시작
다음 명령을 실행했습니다:
./launcher restart app
또한 다음도 시도했습니다:
sudo ./launcher rebuild app
(Daemon은 일시적으로 사용할 수 없었지만 나중에 수정되었습니다.)
작동하지 않는 부분
이미지 외부 접근
다음에 접근할 때:
https://techenclave.com/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg
다음과 같이 반환됩니다:
404 Not Found
이것은 모든 브라우저와 시크릿 모드에서 발생합니다.
도움이 필요한 부분
다음과 같은 원인을 식별하는 데 도움을 주실 수 있을까요?
localhost:3000을 통해 서빙되는 정상 작동하는 업로드,- 그러나 공개 도메인에서 외부적으로 404를 반환하는 경우?
무엇을 더 확인해야 합니까? 확인해야 할 관련 설정이나 로그가 있나요?
미리 감사합니다!


