Serve Discourse from a subfolder (path prefix) instead of a subdomain

얼마 전부터 컨테이너에서 X-Accel-Mapping header missing 메시지가 상당히 높은 빈도로 출력되고 있습니다. 단, 모든 방문자나 모든 내비게이션 단계에서 발생하는 것은 아닙니다. 해당 헤더가 Nginx 설정에 명시적으로 정의되어 있긴 하지만 모든 요청에 대해 설정된 것은 아니라는 점을 확인했습니다: discourse/config/nginx.sample.conf at main · discourse/discourse · GitHub

이 포럼에서 다른 곳에서 이 문제가 보고된 것을 볼 수 없어, 우리가 사용하는 서브디렉터리(subdir) 설정과 관련이 있을 수 있다고 의심해 보지만, 그 연결고리는 명확하지 않습니다.

정확히 어떤 부분이 이 메시지를 출력하는지 확실하지는 않지만, X-Sendfile-TypeX-Accel-Redirect로 설정되어 있고 X-Accel-Mapping이 설정되지 않은 경우에만 이런 일이 일어나야 한다고 추측합니다. 그런데 설정 파일에는 두 헤더가 모두 정의되어 있거나, 모두 비어 있는 경우만 존재합니다 :thinking:.

사실 이 메시지는 백업에 접근하거나, 더 관련이 깊은 부분으로, 업로드 파일에 접근할 때만 설정됩니다. 직접 테스트해 보니 업로드된 이미지 등이 포함된 게시물을 볼 때마다 해당 메시지가 트리거되는 것을 확인했습니다. 설정을 살펴보면 X-Accel-Redirect는 설정되어 있고 X-Accel-Mapping이 설정되지 않은 상태는 불가능해 보입니다. 또한 이는 컨테이너 내부에서 Nginx가 설정하고 Discourse/unicorn/pitchfork/백엔드만 소비하는 요청 헤더이므로, 컨테이너를 빠져나갔다 들어오는 것이 아닙니다.

아, 우리는 Nginx가 STDERR로 로그를 기록하도록 설정해 두었고, Discourse 로그에서 이 메시지를 볼 수 없으므로 Nginx 자체에서 이 메시지를 출력하는 것임을 확신합니다. 이것이 다른 누군가에게 인지되지 않은 이유일 수 있으며, Nginx 로그 파일에 기록되어 있기 때문입니다. 다른 분들도 shared/*/log/var-log/nginx/error.log 파일에 동일한 메시지가 있는지 확인해 주실 수 있을까요? 만약 그렇다면, 서브디렉터리 설정을 사용하지 않는 다른 사용자들에게도 확인하여 원인을 좁혀 나가보겠습니다.