assets 폴더에 있는 큰 JavaScript 파일

파일 /assets/application-7c87db9088046beb643be94b61428105469e084e8d02f141c57adfaf14168c63.js 중 하나가 거의 3.1MB 크기로, Nginx 리버스 프록시에서 error.log에 많은 경고를 유발하고 있습니다.

an upstream response is buffered to a temporary file /var/lib/nginx/proxy/2/77/0012036772 while reading upstream, client: XXXXXX

  • 이 정도로 큰 JavaScript 파일이 무엇에 사용되는지 아는 분이 계신가요?
  • 이 파일의 크기를 줄이는 방법이 있을까요? Nginx 경고 메시지를 줄이는 한 가지 방법은 버퍼 크기를 3.1MB로 늘리는 것이지만, 이는 기본 Nginx 설정에 비해 너무 과도한 조치가 아닌지 궁금합니다.

Discourse 사이트를 처음 로드할 때, 전체 JavaScript 애플리케이션이 브라우저로 전송됩니다(그 후 캐시되므로 이후 페이지 로딩은 훨씬 빠릅니다). 그 3MB 파일이 바로 그것입니다.

공식 설치 가이드를 따를 경우, 이 파일을 브로틀리 압축으로 서빙하는 사전 구성된 nginx 리버스 프록시를 받게 된다는 점도 참고할 가치가 있습니다. 이를 통해 파일 크기가 400KB로 줄어듭니다.

Falco님 감사합니다. 웹 컨테이너와 데이터 컨테이너를 분리하고 수동으로 리버스 프록시를 구성했습니다. discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub 에 있는 가이드는 스탠드얼론 컨테이너용인 것 같습니다.

미리 구성된 nginx 리버스 프록시 구성에 대해 말씀하신 것은 discourse/config/nginx.sample.conf at main · discourse/discourse · GitHub 의 구성을 사용하라는 뜻인가요?

해당 구성 파일은 공식 설치 가이드에서 사용하는 템플릿이지만, 설치 중에도 설치 스크립트에 의해 크게 수정됩니다.

공식 설치 가이드를 따를 때만 구성 파일을 제공하게 됩니다. 가이드에서 벗어나면 brotli, HTTP/2, IPv6 등 우리가 지원하는 기능이 누락되지 않도록 주의하셔야 합니다.

@Falco 디스코urses 포럼을 읽어보니 웹 컨테이너와 DB 컨테이너를 분리하는 것이 선호되거나 권장되는 방식인 것 같습니다. 분리된 컨테이너에 대한 수동 nginx 설정 또는 자동 설치에 관한 공식 가이드가 있다면 좋겠습니다.

우리가 권장하는 설치 방법은 공식 설치 가이드에 문서화된 방식입니다. 다만, 웹/데이터 컨테이너를 별도로 사용하는 경우에도 웹 컨테이너 내부에 사전 설정된 nginx에 영향을 주지 않으며, 추가적인 리버스 프록시가 필요 없이 동일한 방식으로 작동해야 합니다.

Nginx 프록시 → 개별 Web 및 DB 컨테이너 구성으로 여러 Discourse 포럼을 호스팅하면서 최적화를 찾고 있습니다. 이 시나리오에서는 공식 설치 과정에서 이루어지는 성능 향상이 Nginx 프록시에서 수동으로 이루어져야 한다고 가정합니다.