|
| 1 | +# ngx_http_referer_module |
| 2 | + |
| 3 | +- [示例配置](#example_configuration) |
| 4 | +- [指令](#directives) |
| 5 | + - [referer_hash_bucket_size](#referer_hash_bucket_size) |
| 6 | + - [referer_hash_max_size](#referer_hash_max_size) |
| 7 | + - [valid_referers](#valid_referers) |
| 8 | +- [内嵌变量](#embedded_variables) |
| 9 | + |
| 10 | +`ngx_http_referer_module` 模块用于阻止 **Referer** 头字段为无效值的请求访问站点。需记住的是,使用适当的 **Referer** 字段值来伪造请求非常容易,因此本模块的预期目的不是要彻底阻止此类请求,而是阻止常规浏览器发送的大量流量请求。还应该考虑到,即使是有效请求,常规浏览器也可能不发送 **Referer** 字段。 |
| 11 | + |
| 12 | +<a id="example_configuration"></a> |
| 13 | + |
| 14 | +## 示例配置 |
| 15 | + |
| 16 | +```nginx |
| 17 | +valid_referers none blocked server_names |
| 18 | + *.example.com example.* www.example.org/galleries/ |
| 19 | + ~\.google\.; |
| 20 | +
|
| 21 | +if ($invalid_referer) { |
| 22 | + return 403; |
| 23 | +} |
| 24 | +``` |
| 25 | + |
| 26 | +<a id="directives"></a> |
| 27 | + |
| 28 | +## 指令 |
| 29 | + |
| 30 | +### referer_hash_bucket_size |
| 31 | + |
| 32 | +|\-|说明| |
| 33 | +|:------|:------| |
| 34 | +|**语法**|**referer_hash_bucket_size** `size`;| |
| 35 | +|**默认**|referer_hash_bucket_size 64;| |
| 36 | +|**上下文**|server、location| |
| 37 | + |
| 38 | +定义已知可发送正确替换地址的可信地址。如果指定了特殊值 `unix:`,则所有 UNIX 域套接字都将受信任。也可以使用主机名(1.13.1)指定可信地址。 |
| 39 | + |
| 40 | +> 从 1.3.0 版本和 1.2.1 版本开始支持 IPv6 地址。 |
| 41 | +
|
| 42 | +### real_ip_header |
| 43 | + |
| 44 | +|\-|说明| |
| 45 | +|:------|:------| |
| 46 | +|**语法**|**real_ip_header** `field` | `X-Real-IP` | `X-Forwarded-For` | `proxy_protocol`;| |
| 47 | +|**默认**|real_ip_header X-Real-IP;| |
| 48 | +|**上下文**|http、server、location| |
| 49 | +|**提示**|该指令在 1.0.5 版本中出现| |
| 50 | + |
| 51 | +设置有效引用哈希表的桶大小。设置哈希表的详细信息在单独的[文档](../../介绍/设置哈希.md)中提供。 |
| 52 | + |
| 53 | +### referer_hash_max_size |
| 54 | + |
| 55 | +|\-|说明| |
| 56 | +|:------|:------| |
| 57 | +|**语法**|**referer_hash_max_size** `size`;| |
| 58 | +|**默认**|referer_hash_max_size 2048;| |
| 59 | +|**上下文**|server、location| |
| 60 | +|**提示**|该指令在 1.0.5 版本中出现| |
| 61 | + |
| 62 | +设置有效引用哈希表的最大 `size`。设置哈希表的详细信息在单独的[文档](../../介绍/设置哈希.md)中提供。 |
| 63 | + |
| 64 | +### valid_referers |
| 65 | + |
| 66 | +|\-|说明| |
| 67 | +|:------|:------| |
| 68 | +|**语法**|**valid_referers** `none` | `blocked` | `server_names` | `string ...`;| |
| 69 | +|**默认**|——| |
| 70 | +|**上下文**|server、location| |
| 71 | + |
| 72 | +指定 **Referer** 请求头字段值将导致内嵌的 `$invalid_referer` 变量设置为空字符串。否则,变量将为 `1`。匹配搜索不区分大小写。 |
| 73 | + |
| 74 | +参数说明如下: |
| 75 | + |
| 76 | +- `none` |
| 77 | + |
| 78 | + 请求头中缺少 **Referer** 字段 |
| 79 | + |
| 80 | +- `blocked` |
| 81 | + |
| 82 | + **Referer** 字段出现在请求头中,但其值已被防火墙或代理服务器删除,这些值为不以 `http://` 或 `https://` 开头的字符串 |
| 83 | + |
| 84 | +- `server_names` |
| 85 | + |
| 86 | + **Referer** 请求头字段包含一个服务器名称 |
| 87 | + |
| 88 | +- 任意字符串 |
| 89 | + |
| 90 | + 定义一个服务器名称和一个可选的 URI 前缀。服务器名称的开头或结尾可以包含`*`。在检查期间,**Referer** 字段中的服务器端口被忽略 |
| 91 | + |
| 92 | +- 正则表达式 |
| 93 | + |
| 94 | + 第一个符号应为 `〜`。要注意的是,表达式只与 `http://` 或 `https://` 之后的文本匹配。 |
| 95 | + |
| 96 | +示例: |
| 97 | + |
| 98 | +```nginx |
| 99 | +valid_referers none blocked server_names |
| 100 | + *.example.com example.* www.example.org/galleries/ |
| 101 | + ~\.google\.; |
| 102 | +``` |
| 103 | + |
| 104 | +<a id="embedded_variables"></a> |
| 105 | + |
| 106 | +## 内嵌变量 |
| 107 | + |
| 108 | +- `$invalid_referer` |
| 109 | + |
| 110 | + 如果 **Referer** 请求头字段的值[有效](#valid_referers),则为空字符串,否则为 1。 |
| 111 | + |
| 112 | +## 原文档 |
| 113 | +[http://nginx.org/en/docs/http/ngx_http_referer_module.html](http://nginx.org/en/docs/http/ngx_http_referer_module.html) |
0 commit comments