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