nginx如何实现图片防盗链

Nginx经常使用的防盗链主要有如下二种方法,直接写到nginx的配置文件里就能够了。 一,针对图片目录实行防盗链(修改相关域名) location /images/ { alias /data/images/; valid_referers none blocked *.dujiaoniu.com; if ($invalid_referer) { rewrite ^/  http://<font color="#ff0000">www.57cto.com</font>/daolian.gif; #return 403; } } 二,针对后缀实行防盗链(修改相关域名) location ~* \.(gif|jpg|jpeg|png|bmp|txt|zip|jar|swf)$ { valid_referers none blocked *.dujiaoniu.com; if ($invalid_referer) { rewrite ^/  http://<font color="#ff0000">www.57cto.com</font>/daolian.gif; #return 403; } } 须要注意的是,这二段防盗链的配置要放在正确的server里,也就是要放在图片url所在的server_name里。其次 rewrite也要写正确,不然可能形成重复rewrite,能够用firefox的插件Firebug来查看。若是不想重写到某个url, 能够直接返回403。 另外,还能够使用第三方模块ngx_http_accesskey_module实现Nginx防盗链,这里不做介绍,能够百度一下。 附上有关Referer的解释: 当一个请求头的Referer字段中包含一些非正确的字段,这个模块能够禁止这个请求访问站点。 这个头能够随意的伪造,所以,使用这个模块并不能100%的阻止这些请求,绝大多数拒绝的请求来自一些典型的浏览器, 能够认为这些典型的浏览器并不能提供一个”Referer”头,甚至是那些正确的请求。 指令:valid_referers 语法:valid_referers [none|blocked|server_names] … 默认值:none 使用字段:server, location 这个指令在referer头的基础上为 $invalid_referer 变量赋值,其值为0或1。 能够使用这个指令来实现防盗链功能,若是valid_referers列表中没有Referer头的值, $invalid_referer将被设置为1( 参照前例)。 参数能够使以下形式: none意为不存在的Referer头 blocked意为根据防火墙假装Referer头,如:“Referer: XXXXXXX”。 server_names为一个或多个服务器的列表,0.5.33版本之后能够在名称中使用“*”通配符。
相关文章
相关标签/搜索