nginx 防盗链
nginx 防盗链
- 参考链接:http://nginx.org/en/docs/http/ngx_http_referer_module.html
- 来自模块: Module ngx_http_referer_module
指令:
- refere_hash_bucket_size
Sets the bucket size for the valid referers hash tables. The details of setting up hash tables are provided in a separate document. - refere_hash_max_size
Sets the maximum size of the valid referers hash tables. The details of setting up hash tables are provided in a separate document. - valid referes: valid_referers none | blocked | server_names | string …;
指定”REFERE”请求头部字段值,会引起”$invalid_refere” 的值为”0”或”1”,后面字符匹配的则为”0”,否则则为”1”,匹配不区分大小写none: 在请求头部没有”Referer” 字段
blocked: 请求头部中存在 “Referer” 字段,但是其值被防火墙或者代理服务器删除,此种情况会出现不是以”http://"和"https://"开始的
server_names: 请求头部包含服务器名
string: 定义一个服务器名,和一个可选的URI前缀,服务器名可以是以”*”结尾或者开始,不进行端口的检查
正则表达式:
第一个符号应该使用”~”,并且匹配字符应该是从”http://"和"https://“
Example:
valid_referers none blocked server_names
*.example.com example.* www.example.org/galleries/
~\.google\.;
- 配置如下,可以和上面的配置结合起来
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$
{
expires 7d;
valid_referers none blocked server_names *.test.com ;
if ($invalid_referer) {
return 403;
}
access_log off;
}
location ~ …:”~“表示后面内容执行一个正则匹配并且不区分大小写,而”~”表示执行正则匹配但是区分大小写
上面配置文件无作用,下载echo-nginx-module 在if($invalid_referer) 中加echo语句 可以看出并没有执行到该语句