HTTPS를 활성화한 후 Discourse가 작동하지 않습니다

안녕하세요,

Let’s Encrypt 템플릿을 활성화하고 Discourse를 재빌드한 후 아무것도 작동하지 않습니다:

NGINX에서 이해할 수 없는 오류가 발생합니다:

이상한 점은 /ETC에 nginx 디렉터리가 없다는 것입니다.

활성화된 템플릿은 다음과 같습니다:

다음은 해당 설정입니다. 앱은 이 설정으로 재빌드되었습니다.

이러한 문제의 원인이 무엇일 수 있을까요?
인증서는 호스트명 discourse.itas-karlsruhe.de에 대해 발급되어야 한다고 생각합니다.

이미 launcher를 통해 앱이 실제로 실행 중인지 확인해 보았습니다 … 네, 실행 중입니다 …

I.

현재 홈 디렉터리(~)에 있는 것 같습니다. cd etc를 실행했다면, cd /etc/nginx를 사용해야 합니다.

아니요, 올바른 디렉터리에서 확인했습니다:

이것이 표준 Docker 설치라면, 먼저 앱에 진입해야 합니다.

cd /var/discourse
./launcher enter app

이 과정이 성공적으로 완료되었다면, sed를 사용하여 설정 파일의 46번째 줄을 출력할 수 있습니다:

sed -n '46p' /etc/nginx/conf.d/discourse.conf

저와 동일한 템플릿을 사용하고 해당 설정 파일에 특정 수정 사항이 없는 경우, 다음과 같은 내용을 확인할 수 있습니다:

  return 301 https://discourse.softpress.com$request_uri;

감사합니다.
다음과 같이 확인했습니다:

image

보시는 것처럼 app.yml 파일의 “Discourse hostname” 필드가 입력되어 있습니다:

모종의 이유로 호스트명 치환이 실패하는 것 같은데, 그 이유가 무엇일지 정확히 알 수 없습니다. Discourse를 다시 빌드할 때 아래 명령어를 실행하여 진행하셨나요?

cd /var/discourse
./launcher rebuild app

나와 당신 사이의 유일한 차이는 도메인 이름에 하이픈을 사용했다는 점인데, 이것이 문제를 일으킬 것이라고는 정말로 생각하기 어렵습니다.

네, 제가 앱을 다시 구축한 방식은 다음과 같습니다 …

다시 구축한 후 모든 것이 정상적으로 작동하는 것 같습니다:

여러 번 재구축을 수행하면 Let’s Encrypt의 요청 한도에 도달할 수 있습니다.

서버에는 nginx가 없으며, discourse 컨테이너 안에 있습니다. 그래서 찾을 수 없는 것입니다.

그러면 재구축으로 문제를 해결한 것이군요.

해당 게시물을 해결책으로 표시해야 합니다.

제가 단순히 말씀드린 것은, 로그에서 오류나 그런 것을 찾지 못했다는 것입니다. (스크린샷 참고)
빌드 프로세스가 정상적으로 진행되는 것 같습니다 …

지금 최종 도메인을 요청했습니다. 해당 도메인으로 앱을 다시 빌드할 것입니다.

Let’s Encrypt 관련 설정을 모두 제거하고 VM의 원래 호스트명을 사용하니 모든 것이 정상적으로 작동합니다. 해당 설정에 문제가 있는 이유를 알지 못하겠습니다.

시몬님, 안녕하세요.

다시 재구축을 해보았는데, 인증서가 잘못된 이름으로 발급된 것을 확인했습니다:

app.yml 파일이 잘못된 방식으로 설정되어 있을까요?

app.txt (4,1 KB)

무엇을 말씀하시는 건가요?

I

51번째 줄

DISCOURSE_HOSTNAME: deinbalkonnetz.de

이것은 당신의 설정 파일이 아닙니다. 어디서 가져온 건가요?

???

이것은 제 설정 파일입니다… 이 도메인을 우리 VM으로 라우팅했고, 이 서버에서 Discourse를 설정하려고 하고 있습니다…

그 다음, 설정 파일에서 deinbalkonnetz.de가 나오는 모든 부분을 변경해야 합니다.

그 후, 앱을 다시 빌드해야 합니다.

everywhere라고 한 게 무슨 뜻인가요?
호스트네임은 51행에서만 사용되는데…

app.yml 외에는 다른 설정 파일을 모릅니다…

이것이 도움이 될까요?

Jammy님, 감사합니다.

이것들은 분명히 중요한 포인트들이죠.

문제는 제 호스트네임이 전혀 사용되지 않는다는 것입니다.
DISCOURSE_HOSTNAME: ‘deinbalkonnetz.de’

인증서에는 변수 이름 대신 실제 호스트네임인 "deinbalkonnetz.de"가 사용되어야 한다고 생각합니다.

http://deinbalkonnetz.de/를 Let’s Encrypt 인증서에 두 번째 도메인으로 추가하여 임시 해결책으로 사용할 수 있을까요?