模块 ngx_http_referer_module
配置示例 指令 referer_hash_bucket_size referer_hash_max_size valid_referers 内嵌变量 |
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 64; |
上下文 |
server , location |
此指令出现在 1.0.5 版本中。
设置有效 referer 哈希表的 bucket 大小。关于设置哈希表的详细信息在单独的 文档 中提供。
语法 |
referer_hash_max_size |
---|---|
默认值 |
referer_hash_max_size 2048; |
上下文 |
server , location |
此指令出现在 1.0.5 版本中。
设置有效 referer 哈希表的 size
最大值。关于设置哈希表的详细信息在单独的 文档 中提供。
语法 |
valid_referers |
---|---|
默认值 | — |
上下文 |
server , location |
指定将导致内嵌变量 $invalid_referer
设置为空字符串的“Referer”请求头部字段值。否则,该变量将被设置为“1
”。匹配搜索不区分大小写。
参数可以如下所示:
none
- 请求头部中缺少“Referer”字段;
blocked
- “Referer”字段存在于请求头部中,但其值已被防火墙或代理服务器删除;这些值是不以“
http://
”或“https://
”开头的字符串; server_names
- “Referer”请求头部字段包含一个服务器名称;
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
”。