nginx模块ngx_http_referer_module一般用于阻挡来源非法的域名请求,咱们应该牢记。下面这篇文章主要介绍了nginx利用referer指令实现防盗链配置的相关资料。html
实现图片防盗链 实例:nginx
location ~* \.(gif|jpg|png|webp)$ { valid_referers none blocked domain.com *.domain.com server_names ~\.google\. ~\.baidu\.; if ($invalid_referer) { return 403; #rewrite ^/ http://www.domain.com/403.jpg; } root /opt/www/image; #若是不是默认nginx目录就须要从新配置,不然报404的错误 }
以上全部来至domain.com和域名以及baidu和google的站点均可以访问到当前站点的图片,若是来源域名不在这个列表中,那么$invalid_referer等于1,在if语句中返回一个403给用户,这样用户便会看到一个403的页面,若是使用下面的rewrite,那么盗链的图片都会显示403.jpg。web
none规则实现了容许空referer访问,即当直接在浏览器打开图片,referer为空时,图片仍能正常显示.正则表达式
若是不是域名是以IP地址的形式进行访问,直接写IP地址便可。express
[root@loya ~]# curl -I http://qingkang.me/1.jpg -H 'Referer:http://www.baidu.com' HTTP/1.1 200 OK Server: nginx/1.8.1 Date: Fri, 16 Dec 2016 14:56:51 GMT Content-Type: image/jpeg Content-Length: 17746 Last-Modified: Tue, 16 Aug 2016 03:20:21 GMT Connection: keep-alive ETag: "57b28675-4552" Accept-Ranges: bytes [root@loya ~]# curl -I http://qingkang.me/1.jpg -H 'Referer:http://www.qq.com' HTTP/1.1 403 Forbidden Server: nginx/1.8.1 Date: Fri, 16 Dec 2016 14:56:58 GMT Content-Type: text/html; charset=utf-8 Content-Length: 168 Connection: keep-alive
指令:浏览器
语法: valid_referers none | blocked | server_names | string …;服务器
配置段: server, locationdom
指定合法的来源'referer', 他决定了内置变量$invalid_referer的值,若是referer头部包含在这个合法网址里面,这个变量被设置为0,不然设置为1. 须要注意的是:这里并不区分大小写的.curl
参数说明:google
注意
经过Referer实现防盗链比较基础,仅能够简单实现方式资源被盗用。构造Referer的请求很容易实现。