首页 > 资源分享 > nginx服务器配置图片防盗链nginx.conf设置图片防盗链nginx图片盗链
2018
12-09

nginx服务器配置图片防盗链nginx.conf设置图片防盗链nginx图片盗链

今天说下图片防盗链,实现nginx服务器图片防盗链是根据访问的来源判断的,根据图片来源来实现,但是只能先限制基本的图片盗用,无法防止图片采集。

nginx服务器配置图片防盗链nginx.conf设置图片防盗链nginx图片盗链nginx的防盗链或者准确的说是防止非指定域名访问。

nginx防盗链的代码配置,使用nginx location进行图片匹配,匹配到图片后进行来源Referer的判断,如果是不是本站就返回403或图片。

nginx的配置文件/usr/local/nginx/conf/nginx.conf中匹配图片的代码:

location ~ .*\.(gif|jpg|jpeg|png|bmp)$ {
      expires       7d;
}

在上面的代码中增加防盗链判断代码,使nginx对非本站引用的资源拒绝显示:

location ~ .*\.(gif|jpg|jpeg|png|bmp)$ {
      expires       7d;
    
      valid_referers none blocked server_names *.baidu.com *.google.com;
       #valid_referers server_names *.baidu.com *.google.com; #Referer不能为空
      if ($invalid_referer) {
          rewrite ^/ http://aisoa.cn/static/images/no_call_file.jpg;
          #return 403;
       }
}

valid_referers none blocked    设置来源Referer来自本站或Referer为空

if ($invalid_referer){}  检查是否存在指定的Referer白名单,不存在就返回指定图片或403

修改后重启nginx生效。

nginx的配置文件/usr/local/nginx/conf/nginx.conf中匹配图片的代码:

location ~* \.(gif|jpg|png|bmp)$ {
     valid_referers none blocked *.aisoa.cn server_names ~\.google\. ~\.baidu\.;
     if ($invalid_referer) {
         return 403;
         rewrite ^/ http://aisoa.cn/403.jpg;
    }
 }

以上所有来至aisoa.cn和域名中包含google和baidu的站点都可以访问到当前站点的图片,如果来源域名不在这个列表中。

那么$invalid_referer等于1,在if语句中返回一个403给用户,这样用户便会看到一个403的页面,如果使用下面的rewrite,那么盗链的图片都会显示403.jpg。

如果用户直接在浏览器输入你的图片地址,那么图片显示正常,因为它符合none这个规则。