말씀하신 내용이 틀린 것은 아닙니다. 다만 아마도 YT 임베드가 작동하지 않아서 답답하신 나머지 문제를 해결하려고 하시는 중인 것 같습니다.
아래 명령을 실행하면:
# time rake posts:rebake_match['youtube',string,100]
116 / 76598 (0.2%)-
지연(delay)이 100으로 설정되어 있으므로, 100초마다 게시글 1개만 재베이킹(rebake)됩니다. 이 패턴으로 재베이킹해야 할 게시글이 약 77,000개에 달하므로, 완료하는 데 약 90일이 걸립니다. 제가 100을 사용한 것은 예시일 뿐 권장 사항이 아니었는데, 혼란을 드려 죄송합니다.
그것은 꽤 중요한 단서입니다. 이제 rake 작업을 통해 단일 게시물을 다시 생성(rebake)해도 문제가 해결되지 않는다는 것을 알게 되었으며(또한 @Overgrow 님이 제안한 대로 UI에서 HTML을 다시 빌드해도 작동하지 않는다는 것도 확인했습니다), 이는 이전에 말씀하시려던 내용과 일치합니다.
단계별 문제 해결에 감사드립니다.
잠시 생각해 보겠습니다. 그 사이에 문제가 더 명확해졌으므로 다른 분들도 아이디어를 제시할 수 있을 것입니다.
디버깅에 온 힘을 쏟은 끝에, 문제가 다음과 같다는 사실을 알게 되었습니다. 새 Droplet을 만들 당시, 원래 Droplet에서는 할 수 없었던 몇 가지 업데이트를 할 기회를 잡았습니다. 그중 하나가 IPv6였습니다. 결국 Digital Ocean의 IPv6 범위는 어떤 우주적인 이유로 구글에 의해 대부분 차단되어 있었습니다. 그래서 미래를 위한 조언을 드리자면, DO Discourse 설치를 진행할 때 IPv6를 설정하지 마세요. 나중에 그 IPv6를 제거할 수 없기 때문에, Droplet을 변경해야만 합니다.
그 문제를 수정한 후, 모든 것이 예상대로 작동했습니다. 하지만 정상적인 성장(그리고 알파벳의 최근 전술) 때문에 다시 제로베이스로 돌아왔습니다. 이제 이 오류가 발생하고 있으며, Discourse가 onebox를 처리하는 것을 "중단"하는 방법을 알지 못합니다(심지어 YT 도메인을 블랙리스트에 추가해 보았지만 성공하지 못했습니다). 이는 제가 링크한 해당 게시물에서 "1시간 후에 사라져야 한다"고 했지만, 저는 rebake를 동결할 수 없기 때문입니다… 아니면 할 수 있을까요? 해야 할까요? 다른 옵션들은 서버 측 설정을 변경하는 데 의존하지만, 그것은… 더 많은 IP를 추가하는 것일까요? Onebox 호출에 "X-Forwarded-For"를 강제하는 것일까요?
또한, 보너스 질문: 왜 Discourse가 YT 호출의 "부하"를 떠안는 걸까요? 즉, 이 오류는 모든 호출을 수행하는 것으로 플래그가 찍힌 것이 서버의 IP라는 것을 시사합니다(네, 그것은 onebox unfurl 때문이지만), 하지만.. 왜 그것이 페이지를 로드하는 사용자의 몫이 되지 않는 걸까요? 성능 문제 때문일까요?
임시 해결책으로 이 (아주 우아하지는 않은) CSS를 테스트해 보았는데, 원박스를 처리하지 못하게 하는 데 효과가 있는 것 같습니다. 좀 더 나은 방법을 찾을 때까지 켜고 끌 수 있는(추가하고 제거할 수 있는) 일종의 “망치로 파리 때리기” 방식입니다. 시도해 보고 확인해 보세요:
.onebox-body{
display:none;
}
도움이 되기를 바랍니다.
참고: 몇 개의 원박스 링크에서 테스트해 보았더니 원박스가 사라지고 링크만 남았습니다. 다만 자세히 테스트해 보지는 못했으니 죄송합니다.