配置nginx防止被盗链,提高资源利用率

2016年7月29日
nginx访问日志报大量这种,经查看发现都是搜狗360QQ的图片盗链
49.84.236.135 - - [29/Jul/2016:11:35:58 +0800] "GET/upload/2015_06/forum.php HTTP/1.1" 302 160 "http://pic.*.com/d?query=%E5%A4%8F%E5%AD%A3%E5%A4%A7%E9%94%85%E8%8F%9C%E8%8F%9C%E8%B0%B1&page=1&did=6&st=255&mode=255&phu=http%3A%2F%2Fimages.meishij.net%2Fp%2F20111001%2F16eebce0733b97334d2ef049b79b0209.jpg&p=40230500""Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/47.0.2526.80 Safari/537.36 Core/1.47.640.400QQBrowser/9.4.8309.400" "-"^C
什么是盗链?
盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
302状态码
302重定向又称之为302代表暂时性转移(Temporarily Moved ),英文名称:302 redirect。 也被认为是暂时重定向(temporary redirect),一条对网站浏览器的指令来显示浏览器被要求显示的不同的URL,当一个网页经历过短期的URL的变化时使用。一个暂时重定向是一种服务器端的重定向,能够被搜索引擎蜘蛛正确地处理。
如何确认自己被盗链了呢?
首先查看状态码是302还是200,还是别的
你可以用tailf实时查看,也可以用AWK来统计一天的。
然后看这个http://pic..com,这是*网站图片的网址

我的这条记录大概意思就是,**盗链我服务器中的图片,造成资源的浪费。

下面是如何防止被盗链,在nginx.conf中server中添加
我的都是图片多,所以类型选择gif|jpg|png

    location ~* \.(gif|jpg|png)${
        root   /opt/****;
        valid_referers   *.****.net ****.net;
        if ($invalid_referer) {
        return 403;
    }
    }

代码解释
location ~* .根目录下所有文件 (gif|jpg|png)要屏蔽的文件类型${
valid_referers ..net 所有的2级域名 *.net; 主域名

return 403; 你想设定的返回的值
或者可以设置为自定义的图rewrite ^/http://www.*.com/retrun.html;

上一篇:【0608 - 0612 直播导视 | PPT 下载】MongoDB全球云端技术盛会、阿里巴巴研发效能峰会与你见面啦


下一篇:带你读《企业数字化基石-阿里巴巴云计算基础设施实践》第三章数据中心能效3.2数据中心服务器电能利用率(一)