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