宝塔面板利用nginx服务设置图片防盗链规则

蓝卡手上有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」