模块 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”。