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

时间:2022-02-12 14:52:46

一般情况下,防盗链是针对软件下载和图片的,由于一般的站点不提供资源下载,所以本文主要是针对图片的防盗链

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