외부 링크를 통한 다운로드를 비활성화하고 싶습니다. 즉, 다운로드 권한을 등록된 사용자로 제한하려는 것이 아니라, 제 Discourse 사이트의 리소스는 누구나 다운로드할 수 있도록 하되, 최소한 사이트를 방문하여 해당 주제(토픽)를 확인한 후에만 다운로드할 수 있도록 하고 싶습니다.
현재 Discourse에 업로드된 파일이 있으면, 누군가 그 파일 링크를 다른 곳에 게시하면 사람들이 제 사이트에서 온 것인지도 모른 채 다운로드할 수 있습니다. 이 문제를 해결할 방법이 있을까요?
아니요, 이 경우는 다른 시나리오입니다. 로그인하지 않은 사용자의 다운로드를 제한하는 것이 아니라, 다른 웹사이트에서 해당 링크를 통해 로컬 리소스를 다운로드하는 것을 차단하는 것입니다. 제 사이트를 방문하는 사용자는 등록 여부와 관계없이 다운로드할 수 있도록 하려는 것이죠.
브라우저는 신경 쓰지 않지만, 서버는 신경 쓸 수 있습니다. 기본적으로 브라우저가 참조 페이지와 동일한 오리진(origin)으로 요청을 보낼 때, 서버가 요청이 어디에서 왔는지 알릴 수 있도록 referrer 헤더를 포함합니다. 서버는 이 정보를 사용하여 동작을 조정할 수 있으며, 특정 위치로의 액세스를 허용하거나 거부하는 것도 포함됩니다.
공유해 주셔서 감사합니다, Simon. 제 요구사항에 대한 해결책이 될 수 있을 것 같은데, 아직 Discourse에 어떻게 적용해야 할지 모르겠습니다. 리눅스 서버와 Apache에 대해서는 조금 알고 있지만, Discourse는 Docker와 Nginx를 모두 사용하는데, 이 둘은 제 지식 범위 밖에 있습니다. 하지만 어쨌든 Simon이 방향을 제시해 주셨으니, 제가 할 수 있는 일이 있는지 살펴볼 계획입니다.
첫 번째 replace 섹션의 to: 줄에서 mysite.com *.mysite.com을 볼 수 있는데, 이 부분을 자신의 도메인 이름(예: discourse.org *.discourse.org)으로 대체하세요. 두 번째 replace는 방문자가 Discourse 홈 페이지로 리다이렉트되기를 원하는 경우를 가정하고 있습니다.
변경 사항을 저장한 후, 업데이트된 nginx 설정으로 Discourse를 다시 빌드하려면 다음 명령을 실행하세요.