Discourse에서 'www' 사용법

안녕하세요, www 서브도메인이 사용자를 실제 Discourse 설치 주소로 리다이렉트하도록 확인하고 싶습니다. 방문자를 잃지 않도록 이 설정이 필요하다고 생각합니다. 대부분의 사람들은 웹사이트를 방문할 때 'www’를 생략하지 않기 때문입니다.

레지스트라의 DNS 설정에서 www의 A 레코드를 서버의 IP 주소로 추가해야 합니다. 현재 domain.com의 A 레코드가 가리키고 있는 IP 주소와 동일한 주소입니다.

사용자가 www 버전으로 접속할 때 문제가 발생합니까? Discourse에는 www를 포함하지 않도록 설정되어 있습니다.

아니요, 사용자가 리디렉션되므로 여러 도메인에서 동일한 사이트를 제공하지 않습니다.

이 가이드들이 필요합니다. 저는 동일한 목적으로 이 가이드들을 사용했습니다:

www의 A 레코드를 추가하는 것만으로는 부족하다는 말씀이신가요? 그 글들을 읽었습니다.

두 개의 “서브도메인”에 모두 인증서를 등록하지 않으면 브라우저에서 불쾌한 메시지가 표시됩니다.

방금 Digital Ocean 드롭렛에 Discourse를 설치했습니다. 2단계인 discourse.conf 편집에 nginx 설치가 필요한가요? 확신은 없지만, 제 드롭렛에는 nginx가 설치되어 있지 않은 것 같고, 어떻게 설치해야 할지 막막합니다.

이 가이드에서 해당 부분을 설명하고 있습니다:

https://meta.discourse.org/t/running-other-websites-on-the-same-machine-as-discourse/17247/294

네, www에 동일한 IP를 가리키는 A 레코드를 추가하면 트래픽을 리디렉션하는 데 충분합니다.

다른 가이드에 나와 있는 내용을 수행할 필요가 없으며, IP를 가리키는 A 레코드만 있으면 간단한 리디렉션에 충분합니다.

절대적으로 필요한 경우가 아니라면 설치를 복잡하게 만들지 마세요.

그래서 NET::ERR_CERT_COMMON_NAME_INVALID 브라우저 오류를 피하는 데 충분한가요? www 서브도메인에 discourse를 설치하면 https://example.com으로 사이트를 접속할 때 해당 오류가 발생합니다. https://www.example.com을 사용해야만 정상적으로 작동합니다.

그래서 리다이렉트를 사용해야 합니다. Discourse는 여러 URL에서 서빙할 수 없기 때문입니다.

하나를 선택하고 다른 하나는 리다이렉트하세요.

저도 비슷한 문제를 겪고 있으며, DNS 레벨에서 URL 리다이렉트 레코드를 사용해도 제 경우에는 문제가 해결되지 않습니다.

저는 호스트명 'www.example.com’을 사용하여 Discourse를 설치했으며, 다음 DNS 레코드를 설정했습니다:

A Record             host:WWW      value:my_server_ip
CNAME                host:@        value: www.example.com
URL Redirect Record  host:@        value:https://www.example.com

그런 다음 https://www.ssllabs.com/ssltest/index.html을 사용하여 WWW 없이 https://example.com URL을 확인하면 인증서 이름 불일치(Certificate name mismatch) 오류와 브라우저에서 NET::ERR_CERT_COMMON_NAME_INVALID 오류가 발생합니다.

혹시 제가 뻔한 것을 놓치고 있다면 다시 한번 사과드립니다. 네트워크는 제 강점이 아니거든요!

그래서 제가 그 링크들을 게시한 것입니다. DNS 변경만으로 간단히 해결되길 바랐습니다. 저 역시 그렇게 간단하지 않다고 느꼈습니다. HTTPS로 작동하려면 두 주소 모두에 인증서가 등록되어 있는지 확인해야 했습니다. 이를 위해 위에 게시한 가이드 중 하나를 사용하십시오. 다른 가이드는 리디렉션을 수행할 수 있도록 해 줍니다.

사용자가 URL을 입력할 때 프로토콜을 명시할 가능성은 매우 낮습니다. 만약 이 점이 정말로 걱정된다면, DNS에 Cloudflare를 사용하고 간단한 페이지 규칙을 적용하면 됩니다.

네, 제 도메인을 ‘이동’했거든요(사실 www를 제거하는 걸 선택한 거예요). 그래서 제가 통제하지 못하는 다른 사이트들에서 이미 제 구 도메인을 _https_와 함께 참조하는 기존 링크들을 서빙해야 했습니다. 제 경우에는 완전한 작업을 할 수밖에 없었던 이유가 이 때문일 수 있습니다.

그래서 제가 이해한 바로는, 누군가가 www.example.com을 입력했을 때 https://example.com으로 리다이렉트되는 것만 만족스러우시다면 DNS 변경만으로 충분하다는 말씀이신 거죠?

다만, 어떤 이유에서든 https://www.example.com이 작동하도록 원하신다면(제 경우처럼 그런 링크들이 이미 ‘밖’에 나와 있는 상황이라면), 제공된 가이드를 따라야 합니다.

또는 위에서 언급한 대로 페이지 규칙을 사용하십시오. 와일드카드 인증서를 사용하여 도메인을 프론트하고 트래픽을 매끄럽게 리디렉션합니다.

모든 작업이 Discourse 서버에 추가적인 복잡성 없이 이루어집니다.

페이지 규칙이란 무엇인가요?

저는 How To Install Discourse Behind Nginx on Ubuntu 14.04 | DigitalOcean 튜토리얼을 따라 Digital Ocean 드롭렛에 Nginx를 설치한 후, "2단계"에 나열된 규칙을 적용하여 올바른 도메인으로 리다이렉트할 계획입니다. 이렇게 하면 작동할 것 같습니다! 내일 시도해서 https://www., http://www, http://domain.com, https://domain.com의 모든 조합이 제 Discourse 호스트명으로 리다이렉트되는지 확인해 보겠습니다. 여기서 Lets Encrypt 인증서는 https://www.domain.com입니다.

결과를 지켜봐 주세요!

@Erik_Manger, DNS 기반 솔루션은 SSL 환경에서 저에게 작동하지 않았습니다. @merefield 님이 제공한 첫 번째 링크를 사용했고, 잘 작동하고 있습니다.

이 기능을 작동시키기 위해 Discourse 앞에 Nginx를 설치해야 했나요? 제 Digital Ocean 드롭렛에서는 추가 훅에 사용된 “/etc/nginx/” 경로가 존재하지 않습니다.