안녕하세요!
제 웹사이트는 discourse 2.9 버전을 사용하고 있습니다. 어떤 이유에서인지 discourse를 위해 nginx를 이중으로 사용해야 했습니다. 두 개의 discourse web_only 컨테이너 노드를 배포하고 그 앞에 nginx를 프록시로 사용했습니다. 제 시스템 아키텍처 다이어그램은 다음과 같습니다:
사용자 정의 nginx 프록시로 두 개의 web_only 컨테이너 노드에 요청을 무작위로 분배했을 때, discourse 웹사이트가 간헐적으로 다음 오류를 보고했습니다: “Could not find module ‘handlebars’ imported from’ discurse-common /lib/raw-handlebars’.” 이 경우 브라우저에서 사이트를 방문하면 흰 화면만 표시됩니다. 그러나 사용자 정의 nginx를 사용하여 모든 요청을 web_only 노드 중 하나에만 전달하면 이 오류가 발생하지 않습니다. 이 문제에 대해 검색해 보니, 동일한 오류를 해결하기 위한 이전 커밋들이 몇 가지 있었습니다. 제 버전에는 해당 커밋 코드가 포함되어 있는지 확인했습니다.
참고로, nginx를 이중으로 사용할 때 실제 사용자 IP 주소를 가져오지 못하는 문제가 있습니다. 이는 제가 커스텀 nginx에서 X-Forwarded-For 헤더 필드를 통해 클라이언트 IP 주소를 가져오도록 설정해 두었지만, discourse의 nginx에서 X-Forwarded-For를 비활성화하지 않았기 때문입니다. 그 결과 커스텀 nginx의 X-Forwarded-For 설정이 discourse의 nginx에 의해 덮어쓰기 됩니다.
네, 어떤 것을 사용하든 상관없습니다. 동일한 web_only 이미지를 실행 중입니다. safe-mode를 사용하여 문제를 계속 조사해 보겠으며, 결론이 나면 여기서 다시 보고드리겠습니다.
시스템 아키텍처 다이어그램에서 오해를 드려 죄송합니다. web_only 배포를 위해 다른 머신을 사용했습니다. web_only를 이중으로 사용하는 이유는 web_only 컨테이너가 연결이 너무 많아 한 번 크래시된 적이 있는데, 당시에는 원인을 찾지 못했기 때문입니다. 그래서 같은 문제가 다시 발생하지 않도록 web_only를 이중으로 사용해보았습니다.