其实在Nginx里面,很容易就做到防盗链的,在nginx.conf文件加入一个localtion配置项。
更改配置
下面请看配置:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}
把这一段修改成:
location ~* \.(gif|jpg|png|jpeg)${expires 30d;valid_referers none blocke *.hugao8.com *.baidu.com *.google.com;if ($invalid_referer) {rewrite ^/ https://www.yxiupei.cn;#return 403;}}
这些配置到底是什么意思,下面我们一起来看看
首先
location ~* \.(gif|jpg|png|jpeg)$
这是你需要防盗链的文件格式,可以自定义,多文件格式用 | 符号隔开即可
再看看这一行
valid_referers none blocke *.yxiupei.cn *.baidu.com *.google.com;
就是白名单,允许文件来源页的域名白名单,自行修改成您的域名!*.yxiupei.cn 这个指的是子域名,域名与域名之间使用空格隔开!
rewrite ^/ https://www.yxiupei.cn;
这是访问者访问了防盗链的图片后返回的东西,可以是一个url地址,也可以是一张图片
注意
我们的白名单理有这样一个东西 none blocke
因为防盗链是由来源页验证的,none blocke 表示没有来源页也可以访问,也就是说 来源页为空,或者来源页在白名单内就可以访问
下面我们来删掉 none blocke ,改成
valid_referers *.yxiupei.cn *.baidu.com *.google.com;
这样表示必须要有来源页,且来源页必须在白名单内才能访问了
当然了,也可以设置某个目录防盗链,只需把localtion匹配的改成一个目录就可以了,比如:
location ~ ^/images/ {valid_referers none blocked www.qixing318.com qixing318.com;if ($invalid_referer) {return 404;}#rewrite ^/ http://otherdomin.com/404.jpg;}
这样就对images这个目录设置防盗链了。
