CloudFlared Argo 터널을 사용한 TOR

TOR와 Discourse에 대해 작은 질문/문제가 있습니다.

NPM (Nginx Proxy Manager)을 사용하여 TOR와 Discourse를 설정했는데, 현재는 잘 작동하고 있습니다. 하지만 더 높은 프라이버시를 위해 NPM 대신 CloudFlared Argo Tunnel을 사용하기로 결정했습니다. CloudFlared는 NPM과 함께 사용할 때 문제가 발생하기 때문인데, CloudFlared는 먼저 오리지널 IP와 연결되어야 하기 때문입니다. 예를 들어 Error 1000: DNS points to prohibited IP 오류가 발생합니다. NPM은 이를 프록시 처리하기 때문에 NPM을 비활성화하고 CloudFlared로 전환했습니다.

에러 메시지는 다음과 같은 내용을 설명하며, 문제를 해결하는 데 도움이 될 수 있습니다.

일반적인 원인

  • Cloudflare DNS 앱 내 A 레코드가 Cloudflare IP 주소를 가리키거나, 로드 밸런서 오리지널이 프록시된 레코드를 가리키는 경우.
  • Cloudflare DNS A 또는 CNAME 레코드가 다른 리버스 프록시(예: proxy_pass 기능을 사용하는 nginx 웹 서버)를 참조하여 요청을 Cloudflare로 두 번째로 프록시하는 경우.
  • 요청의 X-Forwarded-For 헤더가 100자보다 긴 경우.
  • 요청에 두 개의 X-Forwarded-For 헤더가 포함된 경우.
  • 오리지널 서버에서 SNI(Server Name Indication) 문제 또는 불일치가 있는 경우.

해결 방법

  • Cloudflare DNS 앱 내 A 레코드가 Cloudflare IP 주소를 가리키고 있다면, IP 주소를 오리지널 웹 서버 IP 주소로 업데이트하십시오.
    *** 오리지널 서버에 Cloudflare 프록시를 통해 요청을 다시 보내는 리버스 프록시가 있습니다. 리버스 프록시를 사용하는 대신, 호스팅 제공업체 또는 사이트 관리자에게 연락하여 오리지널 서버에서 HTTP 리다이렉트를 설정하도록 하십시오.** ← 여기에 주의하십시오.

NPM을 비활성화하고 CloudFlared를 전면(front)에 설정한 후, TOP 주소에서는 Discourse의 제목만 표시되고 콘텐츠는 표시되지 않습니다.

제목이 없는 빈 페이지가 표시되는 것이 아니라, 제목은 정상적으로 표시됩니다 (이는 컨테이너와 Cloudflare 간의 연결이 작동한다는 의미입니다) 하지만 콘텐츠는 비어 있으며, nginx.conf의 값이 이를 수정할 수 있다고 생각합니다.

CloudFlare와 함께 "무용"한 Nginx 프록시를 비활성화하고, CloudFlared Argo 터널을 지원하기 위해 다음 값으로 대체해 보았습니다.

proxy_pass http://unix:/home/f1r4s/discourse/shared/standalone/nginx.http.sock:;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;

#proxy_set_header Host $http_host;
#proxy_http_version 1.1;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header X-Real-IP $remote_addr;

TOR와 CloudFlared는 요즘 사용자 프라이버시를 위해 강력히 권장되므로, 이 문제를 해결할 수 있는 지식을 공유해 주실 분이 있을까요?

참고로, CloudFlared Argo 터널을 비활성화하고 NPM의 "PORT"를 웹소켓 대신 사용하면 TOR는 완벽하게 작동합니다. 하지만 더 고급 보안과 프라이버시 문제를 위해 이 문제를 공유합니다.

Ed.