On this page
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://”开头的字符串;
- 请求 Headers 中存在“ Referer”字段,但其值已被防火墙或代理服务器删除;这些值是不以“
server_names- “ Referer”请求 Headers 字段包含服务器名称之一;
arbitrary string
- 定义服务器名称和可选的 URI 前缀。服务器名称的开头或结尾可以带有“
*”。在检查过程中,“ Referer”字段中的服务器端口将被忽略;
- 定义服务器名称和可选的 URI 前缀。服务器名称的开头或结尾可以带有“
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”。