模块 ngx_http_referer_module
referer_hash_bucket_size referer_hash_max_size valid_referers 嵌入变量的配置 Directives 示例 |
该模块用于阻止
访问站点以获取
“Referer” 标头字段。
应该记住,用适当的
“Referer” 字段值非常简单,因此预期的
这个模块的目的不是彻底阻止此类请求,而是阻止
常规浏览器发送的大量请求。
还应考虑到常规浏览器可能会
即使对于有效请求,也不会发送 “Referer” 字段。ngx_http_referer_module
示例配置
valid_referers none blocked server_names *.example.com example.* www.example.org/galleries/ ~\.google\.; if ($invalid_referer) { return 403; }
Directives
语法: |
referer_hash_bucket_size |
---|---|
默认值: |
referer_hash_bucket_size 64; |
上下文: |
server ,location |
该Directives出现在版本 1.0.5 中。
设置有效 referers 哈希表的存储桶大小。 设置哈希表的详细信息在单独的文档中提供。
语法: |
referer_hash_max_size |
---|---|
默认值: |
referer_hash_max_size 2048; |
上下文: |
server ,location |
该Directives出现在版本 1.0.5 中。
设置有效 referers 哈希表的最大值。
设置哈希表的详细信息在单独的文档中提供。size
语法: |
valid_referers
|
---|---|
默认值: | — |
上下文: |
server ,location |
指定 “Referer” 请求标头字段值
这将导致嵌入的变量
设置为空字符串。
否则,变量将设置为 “”。
搜索匹配项不区分大小写。$invalid_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” 请求标头字段为空字符串
value 被视为有效,否则 “”。
1