nginx / Web Service

16.2 nginx:防盗链模块(ngx_http_referer_module)

 

valid_referers:

Syntax:		valid_referers none | blocked | server_names | string ...;
Default:	—
Context:	server, location

定义’referers’首部的合法可用值,所定义或匹配的值都可以访问;

none:请求报文首部没有’referer’首部,放行访问;
blocked:请求报文的’referer’首部没有值,服务器无法判断来源是否合法,放行访问;
server_names:后面接参数值,参数值可以是完整主机名,也可以是带*通配符的主机名;
arbitrary_string:直接给定字符串,可使用*通配符;
regular expression:被指定的正则表达式模式匹配到的字符串;要使用~开头;

Example:

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ {
  expires 7d;
  		valid_referers  none  blocked  server_names *.kouyuushinn.cn;
  		if ($invalid_referer) {
      		return 403;
      		
          	}
}

valid_referers:定义合法、可访问的资源;
$invalid_referer:非合法引用的资源,返回403错误码;也可定义到另外一个URL,比如:

if ($invalid_referer) {
rewrite  ^/  http://lucifer.kouyuushinn.cn;
}

测试方法:

在本机web主目录下创建一个普通文件或放置一个图片格式的文件,通过如下命令测试防盗链是否生效;

~]# curl  -e  “http://baidu.com/somefile.jpg”   -x127.0.0.1:80   localhost/somefile.jpg

Leave a Reply

Your email address will not be published. Required fields are marked *