안녕하세요,
어제까지는 Discourse가 정상적으로 작동하고 있었습니다. 업데이트를 한 후 현재 문제가 발생했습니다: 502 Bad Gateway.
NGINX를 사용 중이며, Discourse 자체나 해당 서비스의 주요 NGINX 서버 프록시에 대해 아무것도 변경하지 않았습니다.
또한 Cloudflare DNS 등을 사용 중입니다.
다음과 같은 작업을 수행했습니다:
- 웹사이트 관리 패널(커밋을 위한 것)을 통해 Discourse를 업데이트했습니다.
- 서버에 이미 설치되어 있다는 것을 깨달았음에도 불구하고 certbot을 설치했습니다.
sudo snap install core; sudo snap refresh core를 실행했습니다.
- npm과 nodejs를 최신 버전으로 업데이트했습니다.
- 1단계부터 4단계까지의 작업 후 Discourse가 다운되어 있음을 깨닫고 Discourse 앱을 재빌드했습니다.
아무것도 건드리지 않았는지 확인하기 위해 nginx 리버스 프록시를 세 번이나 확인했습니다. 실제로 건드리지 않았습니다.
여기서 제가 무엇을 잘못했을지 조금 혼란스럽습니다.
미리 감사드립니다,
~Blood
pfaffman
(Jay Pfaffman)
2
업그레이드/재부팅 후 1~2분 동안 502 오류가 발생할 수 있습니다.
서버의 npm과 nodejs는 컨테이너 내에서 모든 것을 처리하기 때문에 Discourse에는 영향을 미치지 않습니다.
아직 복구되지 않았다면 명령줄 업그레이드를 수행해 보세요.
cd /var/discourse
./launcher rebuild app
아.
다음과 같이 확인할 수 있습니다.
docker logs -f app
그리고
/var/discourse/shared/logs/.....
첫 번째 명령어인 docker logs -f app를 통해 로그를 확인했습니다.
그 안에서 눈에 띄는 내용은 없었습니다.
또한 /var/discourse/shared/logs/ 디렉터리는 없는 것 같습니다. 제가 가진 것은 다음과 같습니다:
/var/discourse/shared/standalone/log
다만 로그가 해당 디렉터리 안에 있다면, 어떤 파일을 읽어야 하는지 정확히 확신하지는 못하겠습니다.
pfaffman
(Jay Pfaffman)
4
아, 네. 죄송합니다. 당신이 제공한 올바른 경로로 들어가면 rails 로그와 nginx 로그를 볼 수 있습니다. rails 로그를 확인하여 리버스 프록시에서 컨테이너로 데이터가 제대로 전달되는지, 그리고 rails에 오류가 있는지 확인할 수 있습니다.
로그에서 확인한 바로는, redis가 초기에는 연결되지 않다가 스스로 복구되는 것 같습니다. 다만 이것이 이전부터 그랬는지는 확실하지 않아서, 솔직히 제가 겪고 있는 문제가 redis 때문이라고는 생각하지 않습니다.
SSL 핸드셰이크 문제일 수도 있다고 생각했지만, NGINX의 error.log를 확인해봐도 최근 관련 내용은 찾아볼 수 없었습니다.
pfaffman
(Jay Pfaffman)
6
외부 리버스 프록시를 사용 중이라면 SSL 처리는 Discourse가 아닌 리버스 프록시에서 이루어져야 합니다. yml 파일에 ssl과 letsencrypt 템플릿이 포함되어 있다면 이것이 문제가 될 수 있지만, 이전에는 정상적으로 작동했다고 하셨으니요.
네, 주석 처리가 되어 있는지 두 번 확인해 봤는데 실제로 주석 처리가 되어 있더라고요. 그래서 업데이트 이후에 이런 문제가 발생한 이유가 뭔지 정말 이해가 안 됩니다.
그리고 며칠 전, 업데이트 관련해서 이것저것 만지기 전까지는 잘 작동하고 있었거든요. 제가 파악한 바로는, 문제가 있는 서비스가 하나뿐이 아니라서 NGINX 쪽에 문제가 있는 것 같다는 생각이 듭니다.
이런 비슷한 문제를 겪고 있는 다른 분들을 위해 이 내용을 공유합니다. SSL 인증서가 어떤 이유에서인지 null이 되면서 제대로 동작하지 않았습니다.
이후 cerbot에서 Cloudflare Origin 인증서로 전환했고, 현재는 네트워크 설정을 다시 진행 중입니다. :’)
또한 이전 설정처럼 내부 IP + 포트를 사용하는 대신, 소켓을 프록시로 사용하고 있습니다.