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