为 Discourse 服务器添加防盗链,基于 Nginx 反向代理

之前论坛一直没有防盗链,突然发现似乎有点危险,于是加上。

因为使用了 Nginx 反代,于是需要在外层 Nginx 里添加一段防盗链语句就行了:

location / {
        proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
        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-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;
    		valid_referers none blocked *.appinn.net *.appinn.com; // 防盗链域名
    		if ($invalid_referer) {
        		#return 403; // 返回 403 错误
        		rewrite ^/ https://img3.appinn.net/images/202004/icons8-comedy-52.png; // 跳转至某个图片
    		}
}

如果你是原生的 Discourse,其实里面也是一个 Nginx,那么可能需要修改配置文件 web.template.yml 但我并没有测试,所以不确定该如何修改。

不过还是建议将 Discourse 用 Nginx 反代套出来,这样更灵活一些,毕竟让我修改 Discourse 那是完全一脸懵逼的,还不如在外面修改 Nginx…

最后,我选了这样一张 Icons8 的图片作为防盗链:

1 Like

我最近也在学 nginx,一脸懵逼

你加了防盗链之后,我的 rss 里显示的就全糊了。。。 :joy:

theoldreader inoreader FeedMe 和 feedly 都白名单了。

老鼠看看 FeedMe 好用不,其他测试好了。

是不是有必要把常见邮箱也加一下白名单。应该也有邮箱订阅用户吧

邮箱只有摘要吧,我没在邮箱里看到过图片啊

呃,测试了下,似乎不行,有很多问题…

呃,真的有人用 RSS 看啊…
啥订阅器我加个白名单

简单测试可以的。

inoreader 和 FeedMe 用户……

theoldreader 用户

我用聚合阅读似乎没这个问题

不知道,我不常上邮箱,就是想到提示下。