썸네일 불러오기 오류

15년 된 커뮤니티를 Discourse로 이전하는 중입니다. 10만 개가 넘는 모든 게시글을 이전하는 대신, 장기적으로 가치가 있는 일부 게시글만 선택하여 이전하기로 결정했습니다.

기존 게시판에서는 이미지가 https://static.xxx/uploads/xxx.jpg 형식으로 저장되어 있으며, 이전 작업이 완료된 후에도 해당 서버를 계속 유지할 계획입니다.

이미지가 포함된 게시글을 이동할 때, 이미지를 ()로 감싸든 그렇지 않든 썸네일을 가져와 생성하지 않습니다. 현재 세션에서는 정상적으로 표시되지만, 페이지를 강제 새로고침하거나 다른 사용자가 게시글을 확인하면 깨진 이미지 아이콘이 표시됩니다:

해당 아이콘은 정적 서버에 있는 실제 이미지로 직접 연결되며, 이 부분은 정상적으로 작동합니다. 다만 썸네일이 있다면 '좋겠다’는 정도입니다.

현재 제가 생각할 수 있는 유일한 원인은 방화벽 문제입니다. 두 서버 모두 사설 IP 공간에 있으며, 방화벽 설정상 내부 서버가 외부 IP를 통해 다른 서버에 접근하는 것이 차단되어 있습니다. 호스트의 /etc/hosts 파일에서 이를 올바르게 설정했다고 생각 하지만, 저는 Docker 전문가가 아닙니다. 정적 이미지 서버로 ping을 보내면 일반 명령 프롬프트에서는 올바른 내부 IP 주소가 반환됩니다. (자기 자신에게 메모: 컨테이너 내부로 들어가서 그곳에서 테스트해 보기)

static.xx가 내부 IP로 해석되도록 강제하기 위해 추가로 해야 할 작업이 있을까요? ()로 감싼 외부 이미지는 라이트박스 기능이 정상적으로 작동하고 있습니다.

내부 DNS 서버와 통신하도록 구성할 수 있습니다. L3 토폴로지 구조에 따라 달라지지만, 이렇게 하면 루프백 트래픽이 완전히 차단됩니다.

에셋 서버를 핑하면 내부 IP가 표시됩니다. Docker가 대체 호스트 파일을 사용 중인가요?

./launcher enter app을 사용하세요.

아, 그게 문제였군요. 외부 IP로 해석되고 있습니다.
root@discourse-app:/var/www/discourse# cat /etc/hosts

127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 discourse-app

추가했고… 성공했습니다!

컨테이너의 hosts 파일을 수정해도 재빌드 사이에 변경 사항이 유지되지 않습니다. 임시 방편으로 해결하기보다는 DNS 체인을 점검하는 것이 좋습니다.

그건 문제인데… 일단 파일이 토론에 올라오면 원래 파일은 더 이상 참조되지 않는 거죠, 맞나요?