Referer#

该模块用于阻止具有无效:samp:Referer 头字段值的请求访问站点。应注意,伪造具有适当:samp:Referer 字段值的请求非常容易,因此该模块的目的不是彻底阻止此类请求,而是阻止由常规浏览器发送的大量请求流。还应考虑,即使是有效请求,常规浏览器也可能不发送:samp:Referer 字段。

配置示例#

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

if ($invalid_referer) {
    return 403;
}

指令#

referer_hash_bucket_size#

语法

referer_hash_bucket_size size;

默认值

referer_hash_bucket_size 64;

上下文

server, location

设置有效引用者哈希表的桶大小。有关设置哈希表的详细信息,请参阅单独的 文档

referer_hash_max_size#

语法

referer_hash_max_size size;

默认值

referer_hash_max_size 2048;

上下文

server, location

设置有效引用者哈希表的最大大小。有关设置哈希表的详细信息,请参阅单独的 文档

valid_referers#

语法

valid_referers none | blocked | server_names | string ...;

默认值

上下文

server, location

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

参数可以如下:

none

请求头中缺少:samp:Referer 字段;

blocked

请求头中存在:samp:Referer 字段,但其值已被防火墙或代理服务器删除;此类值是指不以 http://https:// 开头的字符串;

server_names

Referer 请求头字段包含一个服务器名称;

arbitrary string

定义一个服务器名称和一个可选的URI前缀。服务器名称可以在开头或结尾加上"*"。在检查过程中,会忽略:samp:Referer 字段中的服务器端口;

regular expression

第一个符号应为"~"。应注意,表达式将与 http://https:// 之后的文本进行匹配。

示例:

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

内置变量#

$invalid_referer#

如果:samp:Referer 请求头字段值被认为是 有效 的,则为空字符串,否则为"1"。