외부 도메인의 하위 디렉터리에서 Discourse를 실행하는 방법?

저희는 워드프레스 웹사이트에서 클라우드 호스팅 기반의 이커머스 플랫폼으로 이전하고 있습니다. 높은 SEO 랭킹을 유지하기 위해 이 플랫폼에서는 저희의 베어 도메인(bare domain)을 사용하게 됩니다.

포스트를 디스코르스(Discourse)로 이전하되, 동일한 도메인 아래에서 운영할 수 있는지 궁금합니다.

정리하자면, http://ultraluz.com.br/ 는 제가 제어하거나 접근할 수 없는 외부 서버에서 운영되므로 nginx 트릭 같은 것은 사용할 수 없을 것 같습니다. 저는 디스코르스가 실행될 서버에 대한 접근 권한만 가지고 있습니다.

제 목표는 http://ultraluz.com.br/iluminacao-para-esportes-como-deixar-as-instalacoes-esportivas-dignas-de-um-atleta-profissional/ 와 같은 포스트를 디스코르스로 이전하되, 동일한 경로를 유지하거나 최소한 domain/blog/same-url 형태로 유지하는 것입니다. 이때 베어 도메인은 Wix와 유사한 플랫폼에서 호스팅 및 포인터 설정이 되어 있어야 합니다.

Cloudflare를 두 사이트 앞에 두고, 서브폴더에 대한 트래픽을 Discourse로 라우팅하는 규칙을 설정하는 것이 가능할 수 있습니다. 실제로 그렇게 하는 사례를 본 적은 없습니다. 아마도 전문가를 고용하거나 직접 해결 방법을 찾아야 할 것입니다. 여기의 서브폴더 설치 관련 주제와 Cloudflare의 관련 문서를 참고하시면 됩니다.

서브폴더가 SEO에 더 좋다는 생각이 이미 사라졌다고 생각합니다. 제 추천은 서브도메인을 사용하는 것입니다. 다만 예산이 있다면 저에게 연락하시거나 Marketplace 채널에 게시물을 남겨 주세요.

기술적으로는 Cloudflare의 엔터프라이즈 페이지 규칙이나 워커를 통해 서브폴더 부분을 구현할 수 있지만, 그 어느 쪽에 대해든 도움을 드릴 수 있을지 솔직히 회의적입니다.

DNS를 제외한 어떤 형태로든 Cloudflare를 지원하기는 어렵습니다.

그리고 네, Google 자체도 모든 것을 단일 도메인 아래에 몰아넣는 것이 SEO에 도움이 된다는 주장은 근거 없는 속설임을 이미 반박한 바 있습니다.

SEO에서는 예방이 최선입니다. 블로그 서브도메인(blog.domain)이 도메인 SEO에 어떤 도움이 되는지 모르겠으니, 애초에 블로그 도메인을 사용할 이유가 없다고 생각합니다.

이 가이드를 따를 계획인데, 다음 중 어떤
assetsPathnames: ["/public/", "/assets/"]
을 사용해야 할까요?

서브폴더 설치는 훨씬 더 복잡하고 매우 취약합니다.

핵심은 동일한 FQDN으로 실행하는 데 아무런 이점이 없으며, 오히려 위험과 비용이 훨씬 더 크다는 점입니다.

그렇게 믿고 있는 거죠. 하지만 서브도메인이 베어 도메인의 랭킹을 높이는 데 도움이 된다는 증거는 전혀 없습니다.

게다가 Cloudflare조차 모든 것을 같은 도메인에서 실행할 것을 권장합니다.

그렇다면 대체 왜 그들의 담론 공동체가 서브도메인에 있는 겁니까?

도메인에 cloudflare가 포함된 사이트는 모두 잘 노출되기 때문입니다. 그리고 그들의 포럼은 엄청나게 큽니다

그렇게 믿는다면 그냥 지나가세요. 여기에는 당신을 위한 것이 아무것도 없습니다. 다른 곳으로 가세요. 당신이 믿는 것과 같은 것을 믿는 사람들이 있는 곳으로 가세요.

2개의 링크로 제한되지 않았다면 데이터가 뒷받침되는 훨씬 더 많은 링크를 달 수 있었을 것입니다. 그리고 막대한 규모를 자랑하는 클라우드플레어(Cloudflare)를 제외하면, 이 검색 결과의 첫 페이지에 등장하는 모든 웹사이트가 서브디렉터리(subdirectories)를 사용하고 있습니다.

SEO 커뮤니티에서 이것이 사실상 합의된 사항인 것 같아서, 같은 생각을 가진 사람들을 다른 곳에서 찾는 것도 어렵지 않을 것입니다.

하지만 서브도메인이 루트 도메인의 랭킹에 도움이 된다는 증거가 조금이라도 있다면, 인터넷을 좀 더 깨워 주십시오 :slight_smile:

매트 컷츠(Matt Cutts)의 직접적인 발언입니다. 여러분의 SEO "전문가"들은 여러분에게 사기성 있는 상품을 팔고 있습니다.

수년간 팀에서 제가 본 사람들 중 최악이고 가장 무능했던 사람들이 바로 "SEO 전문가"들이었습니다. 그들은 일관되게 업계의 수치스러운 존재이자 망신거리였습니다.

맞습니다! 대부분의 사람들이 웹 랭킹에 도움이 되지 않는다고 동의하는 일을 하는 것보다, 사이트가 예상치 못하게 다운되고 명확한 해결책 없이 방치되는 결과를 초래할 수 있는 위험을 감수하는 쪽이 훨씬 나을 수 있습니다.

클라우드플레어로 이걸 해본 사람 있으세요?

이미 다른 주제에서 설명드린 바와 같이, 요청하신 사항은 여기서 지원할 수 없습니다.

Cloudflare의 Enterprise 플랜이 필요하거나, 커스텀 워커를 직접 만들어야 합니다. 어느 쪽이든 Cloudflare 측과 직접 상담하시는 것이 좋습니다.

말씀드린 대로, 이전에 제가 드린 답변이 여기서 받을 수 있는 전부입니다.

충분히 명확히 하지 못한 점은, 이것이 헛된 노력이라는 것입니다.

참고로, 제가 이 작업을 맡는다면 약 1,000달러의 비용을 청구하고, 설정 후 일주일 이상 작동할 것이라는 보장은 드리지 않을 것입니다. (아니면, 아예 해결할 수 있을지 확신할 수 없으므로 500달러를 청구할 수도 있습니다.)

그리고 Cloudflare Enterprise 플랜이 필요합니다.

관심이 있으시다면 Marketplace 채널에 게시물을 올리고 예산을 명시하시되, Cloudflare Enterprise 비용을 지불할 의사가 있으며, 이 작업이 사실상 불가능할 수 있다는 점을 이해하고 있음을 밝혀 주세요.

이 기능을 구현하는 작업의 80%는 완료한 것 같습니다. 서브도메인에 디스코스를 ‘일반’ 설치 방식으로 설치했습니다.

그 후, Cloudflare Worker를 만들어 /blog 경로를 해당 서브도메인으로 프록시하도록 설정했습니다. 동작은 하지만 CSP 정책 때문에 Chrome이 일부 리소스를 로드하는 것을 거부합니다.

이 문제를 우회할 수 있는 방법이 있을까요? 작업이 100% 완료되면 Worker 코드를 공유하겠습니다.

https://ultraluz.com/blog 에 접속하여 현재 상황을 확인할 수 있습니다.

이 문제를 해결한 후에는 robots.txt를 사용하여 Google이 서브도메인을 인덱싱하는 것을 차단할 계획입니다. 이렇게 하면 Google은 /blog 경로만 확인하고 인덱싱하게 되며, 필요할 경우 저는 여전히 서브도메인에 정상적으로 접근할 수 있습니다.

“일반” 설치 방식으로는 제대로 작동하기가 어렵습니다. 서브폴더 설치 절차를 따르는 것이 좋습니다. 이렇게 하면 CSP 문제와 기타 여러 문제를 해결할 수 있습니다. 그 외에는 거의 다 끝난 것 같습니다.

DISCOURSE_RELATIVE_URL_ROOT을 사용할 때 DISCOURSE_HOSTNAME에 무엇을 설정해야 하나요? 상대 루트는 제 경우 blog가 맞나요?

이것이 SSL 관련 사항을 어떻게 변경하나요?这是我的 yml 파일의 env 섹션입니다

env:
  LANG: en_US.UTF-8
  DISCOURSE_RELATIVE_URL_ROOT: /forum

  VIRTUAL_HOST: forum.ultraluz.com.br
  VIRTUAL_PORT: 80
  LETSENCRYPT_HOST: forum.ultraluz.com.br
  LETSENCRYPT_EMAIL: redacted@email.com

  DISCOURSE_HOSTNAME: forum.ultraluz.com.br
  DISCOURSE_DEVELOPER_EMAILS: 'redacted@email.com'

  DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: apikey
  DISCOURSE_SMTP_PASSWORD: "password"
  DISCOURSE_SMTP_ENABLE_START_TLS: true
  SSL_POLICY: Mozilla-Modern  

letsencrypt와 virtual host 관련 설정은 제 nginx 도커(jwilder/nginx-proxy)가 해당 변수를 기반으로 프록시 처리와 SSL 생성을 수행하기 위한 것입니다…

또한 아래 코드가 있었지만, 위 코드에 의해 완전히 대체될 것 같습니다.

run:
  - replace:
      filename: /etc/nginx/conf.d/discourse.conf
      from: "types {"
      to: |
        set_real_ip_from 172.18.0.0/24;
        real_ip_header X-Forwarded-For;
        real_ip_recursive on;
        types {

네, 슬래시를 포함하여 /blog입니다.

아니요, 그냥 ultraluz.com.br만 입력하세요.

LetsEncrypt 부분은 그대로 두시는 것이 좋겠습니다.

이렇게 작동하지 않았습니다. 워커가 데이터를 가져오려면 도메인이 필요한데, 루트 도메인이 다른 IP에 있기 때문인 것 같습니다.

기본적으로 워커에게 "누군가 /blog에 접속하면 rootdomain/blog에서 가져오라"고 지시하는 셈인데, 당연히 현재 워드프레스의 404 오류 페이지가 표시됩니다.

같은 도메인, 여러 IP/서버 관련 문제로 인해 디스커스(Discourse) 에셋을 로드하려면 서브도메인이 필요하다고 생각합니다. 하지만 지금은 늦었고, 잠을 자야 합니다.

가장 쉬운 방법은 일반적인 서브도메인 설치 방식으로 CSP 오류를 수정하는 것일 것 같습니다.