模块 ngx_http_referer_module
| Example Configuration Directives referer_hash_bucket_size referer_hash_max_size valid_referers Embedded Variables |
该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 |
指定“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”请求头字段值被认为
有效,否则为“
1”。
