누군가 조언을 해줄 수 있기를 바랍니다. 그러면 정말 고마울 것입니다. 상황을 설명하겠습니다.
저는 도메인 hostballs[.]com에 여러 번 Discourse를 설치해 보았습니다. 매번 www[.]hostballs[.]com으로 접속하면 hostballs[.]com으로 깔끔하게 리디렉션됩니다. 이는 Let’s Encrypt 인증서가 www가 있는 경우와 없는 경우 모두를 커버하기 때문입니다. 이것이 Discourse의 LE 구현에서 기본적으로 제공되는 표준 동작이라고 알고 있습니다.
현재, 제 새로운 Discourse 설치에서는 비-www 사이트(구성된 URL)에 대해 SSL을 설정하지만, www는 포함하지 않습니다. 즉, www[.]hostballs[.]com으로 접속하는 사용자는 리디렉션되지 않고 SSL 오류를 확인하게 됩니다. 기본 동작이 이와 다르다는 것을 알고 있고, Discourse의 설치 과정이 너무 제어되어 있어서 certbot으로 가서 수동으로 모든 작업을 시작하고 싶지 않습니다(그렇게 하면 정기적인 업데이트가 얼마나 재미있을지 모르겠네요), 앞으로 나아갈 최선의 경로가 무엇인지 확신이 서지 않습니다.
이 문제를 해결하는 동안 app.yml에서 ssl과 LE 템플릿, 그리고 LE 이메일 주석을 처리했습니다. 그런 다음 /shared/standalone에서 letsencrypt와 ssl 디렉토리를 삭제했습니다. SSL 없이 사이트를 다시 빌드한 후, app.yml에서 해당 옵션을 다시 활성화하고 SSL 인증서/설정을 생성하기 위해 다시 빌드했습니다. 이 과정은 성공했지만, www 문제는 여전히 해결되지 않았습니다.
친구 여러분, 감사합니다. 미래에 다른 분들에게 도움이 될 수 있는 몇 가지 세부 사항을 정리해 보겠습니다.
이 문제는 한 사용자가 www로 접속이 되지 않고 인증서 오류가 발생한다고 알려주면서 시작되었습니다. 해당 사용자가 보고 스레드에서 제공한 https 링크에 직접 접속해 보니 저 역시 동일한 문제를 겪었습니다. 과거에는 www를 사용했을 때 같은 문제가 발생하지 않았고, 대신 루트 도메인으로 문제없이 리다이렉트되었습니다. 이로 인해 최근 마이그레이션 후 제 설치 환경이 어딘가 깨져서 새로운 Discourse 설치의 기본 동작 방식대로 작동하지 않는다고 결론 내렸습니다.
그래서 루트 도메인을 사용할 때 기본적으로 www가 작동하는지 증명하기 위해 새 도메인에 Discourse를 새로 설치했습니다. 해당 도메인에 접속한 후, 주소창의 URL을 편집하여 앞에 "www."를 추가했습니다. 예상대로 루트 도메인으로 문제없이 리다이렉트되었습니다. 그러고 나서 한 가지를 더 시도해 보기로 했습니다. URL 앞에 "https://"를 수동으로 입력해 보았습니다. 그러자 동일한 인증서 오류가 발생했습니다.
따라서 Discourse의 LE(Let’s Encrypt) 구현에서 www 서명이 기본 동작이라고 생각하게 된 이유는, 실제로는 주소창에서 URL을 다시 작성하는 동안 브라우저가 포트 80을 기본값으로 사용하면서 http/https 부분을 내게 숨겼기 때문일 수 있습니다.