什么是外链?
外链就是指其他网站直接使用你网站上的资源(图片、视频、音频、CSS文件等)的情况。
为什么要防外链?
防外链是为了保护自己网站资源的版权,防止资源被盗用,降低服务器负担。
nginx如何实现防外链?
下面这段代码可以实现基本的防盗链功能:
location ~* \\.(jpg|jpeg|png|gif)$ { valid_referers none blocked yourwebsite.com; if ($invalid_referer) { return 403; } }
我们可以通过修改if语句的返回值来做不同的处理:
- 403:表示禁止访问。
- 404:表示找不到资源。
- 301:可以返回一个跳转链接,这个页面可以是你想自定义的。
如何添加白名单?
有些情况下,某些合法的网站也可能被误判为盗链,我们需要将这些网站加入白名单中。在valid_referers后面加入whitelist代表白名单,然后我们需要将允许的域名都写入whitelist后面。
location ~* \\.(jpg|jpeg|png|gif)$ { valid_referers none blocked yourwebsite.com whitelist; if ($invalid_referer) { return 403; } }
如何生成referer?
有的爬虫会伪造referer,因此我们需要检查isValidReferer这个变量。isValidReferer为0表示referer为空,否则为1。
此外,我们也可以通过backends添加referer。
set $backends \"http://backend1.com\"; location / { proxy_set_header Referer $backends; }
总结
nginx提供了基本的防盗链功能,我们可以通过常用的方式和命令来完成防盗链,同时设置合理的白名单也能提高防盗链的效果,建议结合其他方法进行防盗链。