可以禁止从外部链接下载吗?

浏览器不会在意,但服务器可以。默认情况下,当浏览器向与包含引用页面的相同源发出请求时,它会包含一个 Referer 头,告知服务器它来自何处。服务器可以利用此信息来影响行为,包括允许或拒绝访问某些位置。

绕过这一限制很容易,但它能防止来自其他网站的随意链接。

location /uploads/ {
    valid_referers  www.example.com;
    if ($invalid_referer) {
        return 403;
    }
}

将上述代码中的 www.example.com 替换为您 Discourse 实例的域名,应该是防止热链接到您实例上传文件的合适的 nginx 配置。

您可能还想采取不同于返回 403(不允许)的操作,例如重定向到您的 Discourse 主页。为此,您可以使用以下代码:

location /uploads/ {
    valid_referers  www.example.com;
    if ($invalid_referer) {
        return 307 /;
    }
}

应该可以在您的 app.yml 文件中添加一些内容,以便在重建时注入该配置。至于具体如何实现,我不太确定,因为尚未深入研究过。

4 个赞