Module ngx_http_referer_module

ngx_http_referer_module模块用于阻止对“引用”标题字段中具有无效值的请求的站点访问。应该记住,使用适当的“ Referer”字段值来构造请求非常容易,因此该模块的预期目的不是彻底阻止此类请求,而是阻止常规浏览器发送的大量请求。还应考虑到常规浏览器甚至对于有效请求也可能不会发送“ Referer”字段。

Example Configuration

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

if ($invalid_referer) {
    return 403;
}

Directives

Syntax:referer_hash_bucket_size size;
Default:referer_hash_bucket_size 64;
Context:server , location

该指令出现在 1.0.5 版中。

设置有效引荐来源哈希表的存储桶大小。设置哈希表的详细信息在单独的document中提供。

Syntax:referer_hash_max_size size;
Default:referer_hash_max_size 2048;
Context:server , location

该指令出现在 1.0.5 版中。

设置有效的参照哈希表的最大size。设置哈希表的详细信息在单独的document中提供。

Syntax:valid_referers none | blocked | server_names | string ...;
Default:
Context:server , location

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

参数可以如下:

  • none

    • 请求 Headers 中缺少“ Referer”字段;
  • blocked

    • 请求 Headers 中存在“ Referer”字段,但其值已被防火墙或代理服务器删除;这些值是不以“ http://”或“ https://”开头的字符串;
  • server_names

    • “ Referer”请求 Headers 字段包含服务器名称之一;
  • arbitrary string

    • 定义服务器名称和可选的 URI 前缀。服务器名称的开头或结尾可以带有“ *”。在检查过程中,“ Referer”字段中的服务器端口将被忽略;
  • regular expression

    • 第一个符号应为“ ~”。应该注意的是,表达式将与“ http://”或“ https://”之后的文本匹配。

Example:

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

Embedded Variables

$invalid_referer

  • 如果“ Referer”请求 Headers 字段的值被认为是valid,则为空字符串,否则为“ 1”。