模块 ngx_http_referer_module

配置示例
指令
     referer_hash_bucket_size
     referer_hash_max_size
     valid_referers
内嵌变量

ngx_http_referer_module 模块用于阻止“Referer”头部字段值无效的请求访问站点。需要注意的是,伪造带有适当“Referer”字段值的请求是相当容易的,因此此模块的目的是阻止由常规浏览器发送的大量请求,而不是彻底阻止此类请求。还应该考虑到,常规浏览器即使对于有效请求也可能不会发送“Referer”字段。

配置示例

valid_referers none blocked server_names
               *.example.com example.* www.example.org/galleries/
               ~\.google\.;

if ($invalid_referer) {
    return 403;
}

指令

语法 referer_hash_bucket_size size;
默认值
referer_hash_bucket_size 64;
上下文 server, location

此指令出现在 1.0.5 版本中。

设置有效 referer 哈希表的 bucket 大小。关于设置哈希表的详细信息在单独的 文档 中提供。

语法 referer_hash_max_size size;
默认值
referer_hash_max_size 2048;
上下文 server, location

此指令出现在 1.0.5 版本中。

设置有效 referer 哈希表的 size 最大值。关于设置哈希表的详细信息在单独的 文档 中提供。

语法 valid_referers none | blocked | server_names | string ...;
默认值
上下文 server, location

指定将导致内嵌变量 $invalid_referer 设置为空字符串的“Referer”请求头部字段值。否则,该变量将被设置为“1”。匹配搜索不区分大小写。

参数可以如下所示:

none
请求头部中缺少“Referer”字段;
blocked
“Referer”字段存在于请求头部中,但其值已被防火墙或代理服务器删除;这些值是不以“http://”或“https://”开头的字符串;
server_names
“Referer”请求头部字段包含一个服务器名称;
string
定义服务器名称和可选的 URI 前缀。服务器名称可以在开头或结尾带有“*”。检查期间,将忽略“Referer”字段中的服务器端口;
~ regular expression
第一个符号应为“~”。需要注意的是,表达式将与“http://”或“https://”之后的文本进行匹配。

示例

valid_referers none blocked server_names
               *.example.com example.* www.example.org/galleries/
               ~\.google\.;

内嵌变量

$invalid_referer
如果“Referer”请求头部字段值被视为有效,则为空字符串,否则为“1”。