51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Nginx实现防盗链配置方法介绍

前言 {#前言}

有些朋友觉得防盗链就是防止图片,其实有很多东西要进行防盗链了,下面来介绍在nginx中实现防盗链配置方法:图片防盗链、下载资源等。

配置说明 {#配置说明}

  1. 格式:

    |-------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 | valid_referers none | blocked | server_names | strings ....; --none:允许没有http_refer的请求访问资源,检测 Referer 头域不存在的情况,则可以访问。 --blocked:检测 Referer 头域的值被防火墙或者代理服务器删除或伪装的情况。这种情况该头域的值不以 "http://" 或 "https://" 开头。允许不是http://开头的,不带协议的请求访问资源。 --server_names :只允许指定ip/域名来的请求访问资源(白名单)。可设置一个或多个 URL ,检测 Referer 头域的值是否是这些 URL 中的某一个。在生产环境中尽量使用域名,不使用ip。 |

  2. 举例

    |-------------------|------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 | # 自己域名 如果别的网站使用了你的文件,他的域名没配置在这里,他则无法访问这个文件 valid_referers none blocked zsyyblog.com; if ($invalid_referer) { return 404; } |

防盗链配置 {#防盗链配置}

假设网站域名是: zsyyblog.com

编辑nginx.conf,在 zsyyblog.com 区域添加如下内容:

|---------------------|--------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 | location ~* .(gif|png|jpg|bmp|swf|flv)$ { valid_referers none blocked zsyyblog.com zsyyblog.com; if ($invalid_referer) { return 403; } } |

以上的例子可以实现扩展名为 gif,png,jpg,bmp,swf,flv的url防止被盗链。如果你需要其它的url防止被盗链,添加相应的后缀即可。

针对图片目录实行防盗链 {#针对图片目录实行防盗链}

|-------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 | location /images/ { alias /data/images/; valid_referers none blocked *.mynginx.com; if ($invalid_referer) { rewrite ^/ http://zsyyblog.com; #return 403; } } |

编辑完成之后,重新启动nginx以便配置生效。

小提示:nginx中 location ~location ~*的区别:
location ~* 不区分大小写,location ~ 区分大小写。

需要注意的是,这二段防盗链的配置要放在正确的server里,也就是要放在图片url所在的server_name里。其次,rewrite也要写正确,否则可能造成重复rewrite,可以用firefox的插件Firebug来查看。如果不想重写到某个url,可以直接返回403。


赞(4)
未经允许不得转载:工具盒子 » Nginx实现防盗链配置方法介绍