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_hash_max_size size; 默认值:referer_hash_max_size 2048; 上下文:server, location
该指令出现在 1.0.5 版中。
设置有效引用哈希表的最大大小。设置哈希表的详细信息在单独的文档中提供。
语 法: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.;
空字符串,如果 “Referer” 请求头字段值被认为是有效的,否则为 “1”。