模块 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 哈希表的桶大小。有关设置哈希表的详细信息,请参阅单独的文档。
语法 |
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”请求头部字段包含服务器名称之一;
- 任意字符串
- 定义服务器名称和可选的 URI 前缀。服务器名称可以在开头或结尾处包含“
*
”。在检查过程中,将忽略“Referer”字段中的服务器端口; - 正则表达式
- 第一个字符应为“
~
”。需要注意的是,表达式将与“http://
”或“https://
”之后的文本匹配。
示例
valid_referers none blocked server_names *.example.com example.* www.example.org/galleries/ ~\.google\.;
嵌入变量
$invalid_referer
- 如果“Referer”请求头部字段值被认为有效,则为空字符串,否则为“
1
”。