502 Bad Gateway 및 Discourse 버전 NOT FOUND

CentOS 7에서 Discourse를 설치하기 위해 안내문을 따랐습니다

이메일 설정을 올바르게 완료하고 테스트 이메일도 수신했습니다. 하지만 항상 502 Bad Gateway 오류가 발생합니다.

이전에 ssl_stapling 관련 문제가 있었지만, 전체 체인 인증서 파일을 포함시켜 해결했습니다.

docker 앱이 커스텀으로 정의된 포트 25654에서 리스닝하는 것을 확인할 수 있습니다:

0.0.0.0:25654->80/tcp, :::25654->80/tcp

discourse 앱이 리스닝하지 않아 발생하는 것으로 보이는 nginx 오류가 다음과 같이 표시됩니다.

connect() failed (111: Connection refused) while connecting to upstream, client: x.x.x.x, server: xxxx, request: “GET / HTTP/2.0”, upstream: “http://x.x.x.x:25654/”, host: “xxxx”

[MY_DOMAIN].net과 discourse.[MY_DOMAIN].net 모두 올바른 IP 주소로 가리키는 DNS 항목을 설정해 두었습니다.

Meta Discourse 커뮤니티에 오신 것을 환영합니다 :slightly_smiling_face:

저는 Let’s Encrypt 커뮤니티에서 SSL 설치 관련 문제를 도와주는 일을 자주 합니다. 그런데 두 번째 서버 블록에 IPv6 리스닝 문구가 빠져 있는 것 같네요:

listen [::]:443 ssl http2;

이 문구가 없으면 IPv6 트래픽이 어디로 향하게 될지 잘 모르겠습니다.

:man_shrugging:

존나선님, 정말 감사합니다. 연결 거부 문제를 해결했습니다.

이제 discourse URL을 시도하면 “Welcome to CentOS” 페이지로 리디렉션되며 다음과 같은 오류 로그가 표시됩니다.

nginx settings2

Discourse doctor는 여전히 버전 NOT FOUND라고 표시합니다.

netstat를 확인해 보니 포트 25654에 docker-proxy 프로세스가 두 개가 실행 중인데, 하나는 tcp용이고 다른 하나는 tcp6용입니다. 다른 튜토리얼의 스크린샷에서는 이런 현상을 볼 수 없어서 이것이 문제가 되는지 궁금합니다.

CentOS는 다른 설정이 필요한 것 같아서, 이 튜토리얼의 nginx 설정을 따랐습니다:

또한 MYDOMAIN.net과 discourse.MYDOMAIN.net을 nginx를 통해 같은 머신에서 실행하고 싶어서, 해당 튜토리얼에서 확인한 app.yml과 nginx conf에 몇 가지 추가 변경 사항도 적용했습니다:

예를 들어 웹소켓 템플릿을 활성화해 두었습니다.

하지만 이제 그 튜토리얼의 댓글에서 소켓을 사용하려면 모든 노출된 포트를 주석 처리해야 한다는 내용을 읽었습니다. 다만 첫 번째 설정을 참고하면 nginx가 25654로 전달하는 트래픽을 수신하도록 “25654:80” 항목을 추가하고 있습니다.

이것이 기본적인 설정 문제라면 죄송합니다. 포트 포워딩/소켓 및 일반적인 네트워크 설정은 제 강점이 아니기 때문입니다.

이것들은 고급 설정입니다. 리버스 프록시 설정과 도커 관리에 익숙하지 않은 사용자의 경우, 공식적인 Discourse 표준 설치 가이드를 따르는 것을 권장합니다. 이 가이드는 완전히 새로운 서버를 전제로 하며, Discourse가 해당 서버에서 실행되는 유일한 웹 앱이라고 가정합니다.