저는 community.website.com에 Discourse를, website.com에는 WordPress를 설치했습니다. Caddy를 리버스 프록시로 사용하고 있으며, Let’s Encrypt가 SSL을 관리하고 있습니다. 초기에 몇 가지 어려움이 있었지만, SSL과 리다이렉트를 포함한 모든 구성이 원활하게 작동하도록 설정했습니다. 리버스 프록시를 다른 방식으로 설정하려는 시도가 수없이 실패한 끝에 이 구성을 선택하게 되었습니다. 저에게 근본적인 문제는 Docker나 Discourse에 대한 사전 경험이 전혀 없었다는 점이었습니다.
또한 캐싱과 Discourse 간에 문제가 발생할 수 있다는 점도 알고 있습니다. 따라서 문제를 피하기 위해 설정을 간소화하거나 특정 규칙을 적용하는 것이 더 나은 방법일 수 있습니다.
현재 구성:
Discourse: community.website.com에서 Docker를 통해 실행 중.
WordPress: website.com에 설치됨.
Caddy: 리버스 프록시 및 Let’s Encrypt SSL 처리.
Cloudflare: DNS, 방화벽, CDN 설정 중.
문제점:
Cloudflare DNS를 프록시 없이(단순 DNS만) 사용할 경우 모든 것이 완벽하게 작동합니다. Caddy가 Let’s Encrypt SSL을 관리하며 문제가 없습니다.
그러나 Cloudflare DNS에서 프록시를 활성화하면 연결이 실패하며 Cloudflare에서 “Website Down” 오류가 발생합니다. 루트 도메인과 서브도메인 모두에 대해 http://를 사용하도록 Caddyfile을 업데이트하고, Cloudflare에서 여러 SSL 구성(Flexible, Full, Full Strict)을 시도해 보았지만 연결을 확립하지 못했습니다.
Caddy와 SSL을 사용하는 Cloudflare이 Discourse와 잘 호환되도록 어떻게 구성해야 할까요?
Cloudflare의 CDN 및 보안 서비스를 사용 중인 경우, 원본 서버에 자체 SSL 인증서를 구성할 필요가 없습니다. 대신 Cloudflare 대시보드의 SSL/TLS 설정으로 이동하여 'Origin Certificate(오리진 인증서)'를 생성하세요. 이 인증서는 원본 서버에서 Cloudflare로 프록시된 트래픽을 보호합니다. 이 Origin Certificate를 원본 서버에 설치하면 모든 구성이 정상적으로 작동합니다.
SSL 인증서를 사용하도록 Discourse NGINX 구성을 편집합니다. 일반적으로 이 파일은 /etc/nginx/conf.d/discourse.conf에 위치하거나, Docker를 사용하는 경우 /var/discourse/containers/ 디렉터리 내에 있습니다.