ngx_http_referer_module 模块

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 指令

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

该指令出现在 1.0.5 版中。

设置有效引用者哈希表的存储桶大小。设置哈希表的详细信息在单独的文档中提供。

referer_hash_max_size 指令

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

该指令出现在 1.0.5 版中。

设置有效引用哈希表的最大大小。设置哈希表的详细信息在单独的文档中提供。

valid_referers 指令

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

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

参数可以如下:

  • none  请求标头中缺少 “Referer” 字段;

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

  • server_names  “Referer” 请求头字段包含服务器名称之一;

  • arbitrary 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”。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号