nginx 防盗链

nginx 防盗链

指令:

  • 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语句 可以看出并没有执行到该语句

posted on 2018-01-07 22:20  游荡的鱼  阅读(208)  评论(0编辑  收藏  举报

导航