其实在Nginx里面,很容易就做到防盗链的,在nginx.conf文件加入一个localtion配置项。

更改配置

下面请看配置:

  1. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  2. {
  3. expires 30d;
  4. }

把这一段修改成:

  1. location ~* \.(gif|jpg|png|jpeg)$
  2. {
  3. expires 30d;
  4. valid_referers none blocke *.hugao8.com *.baidu.com *.google.com;
  5. if ($invalid_referer) {
  6. rewrite ^/ https://www.yxiupei.cn;
  7. #return 403;
  8. }
  9. }

这些配置到底是什么意思,下面我们一起来看看
首先

  1. location ~* \.(gif|jpg|png|jpeg)$

这是你需要防盗链的文件格式,可以自定义,多文件格式用 | 符号隔开即可

再看看这一行

  1. valid_referers none blocke *.yxiupei.cn *.baidu.com *.google.com;

就是白名单,允许文件来源页的域名白名单,自行修改成您的域名!*.yxiupei.cn 这个指的是子域名,域名与域名之间使用空格隔开!

  1. rewrite ^/ https://www.yxiupei.cn;

这是访问者访问了防盗链的图片后返回的东西,可以是一个url地址,也可以是一张图片

注意

我们的白名单理有这样一个东西 none blocke
因为防盗链是由来源页验证的,none blocke 表示没有来源页也可以访问,也就是说 来源页为空,或者来源页在白名单内就可以访问
下面我们来删掉 none blocke ,改成

  1. valid_referers *.yxiupei.cn *.baidu.com *.google.com;

这样表示必须要有来源页,且来源页必须在白名单内才能访问了

当然了,也可以设置某个目录防盗链,只需把localtion匹配的改成一个目录就可以了,比如:

  1. location ~ ^/images/ {
  2. valid_referers none blocked www.qixing318.com qixing318.com;
  3. if ($invalid_referer) {
  4. return 404;
  5. }
  6. #rewrite ^/ http://otherdomin.com/404.jpg;
  7. }

这样就对images这个目录设置防盗链了。