안녕하세요. 단일 머신에서 nginx를 기반으로 Reverse Proxy Manager를 사용하여 Discourse를 설정하려고 시도하고 있습니다. 현재 해당 머신의 기본 포트를 사용하여 DNS를 통해 모든 서비스에 접근할 수 있습니다. 하지만 서브도메인을 통해 트래픽을 라우팅하고 SSL을 강제하는 리버스 프록시로 설정을 변경하면 단순히 작동하지 않습니다. 502 오류가 발생합니다.
여러 개의 컨테이너를 실행 중이며, Proxy Manager는 격리된 상태로, Discourse 관련 모든 컨테이너는 다른 네트워크에 있습니다. 찾을 수 있는 거의 모든 가이드를 살펴봤지만 아무것도 효과가 없습니다. 2025년에도 이걸 성공적으로 수행할 수 있는 방법이 분명히 있을 텐데 말이죠. Proxy Manager와 함께 다른 사이트 하나는 정상적으로 작동하고 있습니다.
Proxy Manager가 Discourse 컨테이너에 접근하기 위해 기본적으로 fpm 네트워크를 사용하므로, Discourse 컨테이너를 이 fpm 네트워크로 전환해야 하는 건가요? 그렇다면 어디에 이 설정을 넣어야 하는지 알 수 없으니 알려주시면 감사하겠습니다. 사람들이 설정에 넣으라고 하지만 정확히 어디인지 정보를 찾을 수 없습니다. ? 설정을 변경하고 싶지는 않습니다.
일부 가이드에서는 포트를 노출하지 말고 Proxy Manager에 맡기라고 해서 그렇게 해봤습니다. 또 다른 가이드에서는 Discourse/templates 디렉토리의 web.socketed templates.yml을 사용해 보라고 했지만 그것도 작동하지 않았습니다. 포트를 노출하고 안 하고 모두 성공 사례가 있다고 하는데, 정보가 일관성이 없습니다. 현재 실제로 작동하고, 잘 작동하는 방법은 무엇인가요? 참고로 저는 단일 머신에서만 실행하고 있습니다.
좋은 소식입니다 - 아직까지 “깨진” 것으로 보이는 것은 없습니다. 그 502 오류는 거의 확실하게 **첫 부팅 시 경합(race condition)**이었을 것입니다: Nginx가 Unicorn이 준비되기도 전에 /srv/status를 시도한 것입니다. 로그에 다음이 표시된다면:
정상적으로 작동하게 만들었습니다. 두 개의 Docker 컨테이너를 실행 중이므로, 컨테이너들이 서로를 인식할 수 있도록 네트워크를 통해 접근을 허용해야 했습니다. Discourse는 내부 Docker 포트에서 실행되기 때문에 외부로 포트가 노출되지 않습니다. 또한 이렇게 하면 보안 면에서도 더 안전합니다.