模块 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_hash_max_size |
---|---|
默认值 |
referer_hash_max_size 2048; |
上下文 |
server 、location |
此指令出现在 1.0.5 版本中。
设置有效引用哈希表的最大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
”。