蓝卡手上有3台ECS,最近发现1台ECS的状态不太正常,负载、流量都有些偏高,这个ECS上的站点不多,流量最大的站点1天也就3000-4000的pv,站点的图片在上传钱也经过压缩,理论上资源消耗不会这么大。
曾经遇到过被反代的,已经能解决了,被DDOS的可能性也不大,剩下最大的可能就是被盗链了,经过排查,发现了1个网站,内容基本就是采集我的站点的,甚至图片都是直接调用的,看来宝塔默认的防盗链并没有起到效果,就准备自己进行操作。
Nginx设置防盗链的方法
下面为完整代码
#SECURITY-START 防盗链配置 location ~ .*\.(jpg|jpeg|gif|png|js|css)$ { expires 30d; access_log off; valid_referers none blocked www.domain.com domain.com; if ($invalid_referer){ rewrite ^/ https://rmt.dogedoge.com/fetch/*****.jpg; #return 404; } }
代码解释
location ~ .*\.(jpg|jpeg|gif|png|js|css)$
(jpg|jpeg|gif|png|js|css)设置防盗链文件类型,可以自行修改文件类型,如果你还想添加其他防盗链内容,直接添加就可以,每个后缀用“|”符号分开!
valid_referers none blocked *.domain.com domain.com;
valid_referers none blocke后面的值是允许访问图片,也就是授权调用文件的域名。
就是白名单,允许文件链出的域名白名单,自行修改成您的域名!
建议将搜索引擎的域名也加入白名单,未测试有效性。
*.baidu.com *.google.com *.bing.com *.so.com *.sogou.com *.sm.cn *.toutiao.com
域名与域名之间使用空格隔开!
rewrite ^/ https://rmt.dogedoge.com/fetch/*****.jpg;
这个图片是盗链返回的图片,也就是替换盗链网站所有盗链的图片。
如果对方盗用你的图片,会显示一个默认图片,这个急救室默认图片。
切记,这个图片不能用你的域名,因为防盗链的作用,盗链者的网站所盗链图片会显示X符号。
nginx彻底地实现真正意义上的防盗链
但是这样并不是完全的防盗链,这只要通过浏览器直接输入图片地址,仍然会显示图片,仍然可以右键图片另存为下载文件!
我们来看第三行:valid_referers none blocked *.domain.com domain.com;
valid_referers 里多了“none blocked”
我们把“none blocked”删掉,改成
valid_referers *.domain.com domain.com;
nginx彻底地实现真正意义上的防盗链完整的代码应该是这样的:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { valid_referers *.domain.com domain.com; if ($invalid_referer) { rewrite ^/ http://www.domain.com/images/404.jpg; #return 404; } expires 30d; }
重启nginx服务
设置完毕后,需要重启一次nginx服务让他加载防盗链规则。
LNMP的话可以使用/etc/init.d/nginx restart或者直接lnmp restart重启即可。
宝塔面板的话,在软件商店,运行环境里面找到nginx,点击,然后服务里面点击重启即可。
尾语
一顿操作后,效果已经实现,在对方网站上显示的防盗链图片还是不错的。「你访问的网站是盗版,请访问主站Domain.com」
评论已关闭