menny 发表于 2017-6-25 15:40:14

Nginx修改配置实现图片防盗链

  一般情况下,防盗链是针对软件下载和图片的,由于一般的站点不提供资源下载,所以本文主要是针对图片的防盗链
  1、如果对全站图片做防盗链,至少需要一个另外的域名存放指向图片。因为如果对全站图片做了防盗链,包括盗链提示图片在内的所有图片都不可能显示。
  此类情况修改 /usr/local/nginx/conf/nginx.conf 文件
  2、对单独域名配置图片防盗链,个人比较推荐,一是便于控制,二是可以重新创建一个域名在同服务器上用来存放盗链提示图片。
  此类情况修改 /usr/local/nginx/conf/vhost/你自己域名.conf 文件
  3、你需要准备一张盗链提示图片,放在其它的服务器或者其它域名下(图片您自己做吧,这里不提供了)
  4、在配置文件里找到类似下面location...jpg...这样的代码,然后照着改吧,我慢慢解释
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$   
{      
expires 30d;      
access_log off;      
valid_referers none blocked *.slyar.com *.jetfond.com *.youdao.com *.zhuaxia.com *.xianguo.com *.google.cn *.google.com *.google.com.tw *.google.com.sg *.google.com.hk *.bloglines.com image.soso.com bing.com cn.bing.com image.baidu.com *.feedburner.com *.feedsky.com;      
if ($invalid_referer)      
{      
rewrite ^/ http://kvm.slyar.com/slyar_hotlinking.png;      
}      
}
  expires 30d; //客户端缓存时间,无关盗链
  access_log off; //不记录图片访问日志,无关盗链
  valid_referers none blocked... //允许访问图片的站点,blocked支持前缀通配符。none需要解释一下,如果你不知道HTTP Refer是什么,那就不知道好了,如果你知道,那这个none就表示匹配没有Refer的访问,通俗点说就是直接用URL访问的,这里我写着表示允许,如果你连直接输入图片地址都不允许看到图片的话,可以删掉这个参数
  rewrite ^/ http://kvm.slyar.com/slyar_hotlinking.png; //盗链请求跳转到某个图片或者某个页面,随便
  5、:wq保存退出
  6、重新加载Nginx配置文件,done
  /etc/init.d/nginx reload
页: [1]
查看完整版本: Nginx修改配置实现图片防盗链