Nginx防盗链

为何要配置防盗链

  • A是某一网站站长,A网站中的图片和音频视频连接等静态资源都保存在对象存储OSS上或者本地。服务器

  • B是另外一网站的站长,B在未经A容许的状况下使用A网站的图片资源,放置在本身网站的网页中,经过这种方法盗取空间和流量。这样的状况下,第三方网站用户看到的是B网站,但并不清楚网站里的图片来源。网站

  • OSS是收费的,这样用户A在没有获取任何收益的状况下,反而承担了资源使用费用,而且B在没有通过容许的状况下适用这些资源也是侵害了A的合法权益。

 

 

综上,为了防止B这一类人的不法侵害,须要使用防盗链进行防御spa

配置防盗链的方法代理

要实现防盗链,须要了解HTTP协议中的请求头部的Referer头域和采用URL的格式表示访问当前网页或者文件的源地址。经过该头域的值,咱们能够检测到访问目标资源的源地址。这样,若是咱们检测到Referer头域中的值并非本身站点内的URL,就采起阻止措施,实现防盗链。code

Nginx的valid_referers能够配置相关防盗链的行为视频

**Syntax:   valid_referers none | blocked | server_names | string ...;
Default:    —
Context:    server, location
#搜索匹配不区分大小写

Parameters can be as follows:
none                #检测Referer头域不存在的请求
blocked             #检测Referer头域的值被防火墙或者代理服务器删除或假装的状况,这种状况头域不以http:// https:// 开头
server_names        #设置一个或多个URL,检测Referer头域的值是不是这些URL中的某个
arbitrary string    #定义一个服务器名称和一个可选的URI前缀。服务器名能够在开头或结尾有“*”。检查时,“Referer”字段中的服务器端口被忽略

这些语法含义指的是,valid_referers配置白名单对请求的头域进行匹配,匹配的值就是$invalid_referer,根据得到的这个值,进行if条件判断,而后进行rewrite。server

示例对象

#匹配文件类型
location ~* \.(gif|jpg|png|jpeg|flv|swf|rar|zip)$ {
    expires     30d;
#容许文件链出的域名白名单,域名之间空格隔开
    valid_referers none blocke *.A.com www.A.com;
#if判断为真
if ($invalid_referer) {
#防盗链图片替换全部盗链图片
    rewrite ^/ http://www.A.com/404.jpg;
    }
}
  • 为了完全实现真正的防盗链,能够将none、blocked删除
  • 防盗链返回图片能够rewrite成图片,也能够是连接

完成防盗链配置,能够在请求头里面看到Host头的指向,会只看到A.com。blog

相关文章
相关标签/搜索