Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/cn/docs/http/ngx_http_referer_module.xml
1 views
1
<?xml version="1.0"?>
2
3
<!--
4
Copyright (C) Igor Sysoev
5
Copyright (C) Nginx, Inc.
6
-->
7
8
<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
9
10
<module name="ngx_http_referer_module模块"
11
link="/cn/docs/http/ngx_http_referer_module.html"
12
lang="cn"
13
translator="nigelzeng"
14
rev="1">
15
16
<section id="summary">
17
18
<para>
19
<literal>ngx_http_referer_module</literal>模块允许拦截<header>Referer</header>请求头中含有非法值的请求,阻止它们访问站点。
20
需要注意的是伪造一个有效的<header>Referer</header>请求头是相当容易的,
21
因此这个模块的预期目的不在于彻底地阻止这些非法请求,而是为了阻止由正常浏览器发出的大规模此类请求。
22
还有一点需要注意,即使正常浏览器发送的合法请求,也可能没有<header>Referer</header>请求头。
23
</para>
24
25
</section>
26
27
28
<section id="example" name="配置实例">
29
30
<para>
31
<example>
32
valid_referers none blocked server_names
33
*.example.com example.* www.example.org/galleries/
34
~\.google\.;
35
36
if ($invalid_referer) {
37
return 403;
38
}
39
</example>
40
</para>
41
42
</section>
43
44
45
<section id="directives" name="指令">
46
47
<directive name="referer_hash_bucket_size">
48
<syntax><value>size</value></syntax>
49
<default>64</default>
50
<context>server</context>
51
<context>location</context>
52
<appeared-in>1.0.5</appeared-in>
53
54
<para>
55
设置用来存储有效referer的哈希表的表项长度。
56
详细的情况参见<link doc="../hash.xml">哈希表设置</link>
57
</para>
58
59
</directive>
60
61
62
<directive name="referer_hash_max_size">
63
<syntax><value>size</value></syntax>
64
<default>2048</default>
65
<context>server</context>
66
<context>location</context>
67
<appeared-in>1.0.5</appeared-in>
68
69
<para>
70
设置用来存储有效referer的哈希表最大<value>桶容量</value>
71
详细的情况参见<link doc="../hash.xml">哈希表设置</link>
72
</para>
73
74
</directive>
75
76
77
<directive name="valid_referers">
78
<syntax>
79
<literal>none</literal> |
80
<literal>blocked</literal> |
81
<literal>server_names</literal> |
82
<value>string</value>
83
...</syntax>
84
<default/>
85
<context>server</context>
86
<context>location</context>
87
88
<para>
89
<header>Referer</header>请求头为指定值时,内嵌变量<var>$invalid_referer</var>被设置为空字符串,
90
否则这个变量会被置成“<literal>1</literal>”。查找匹配时不区分大小写。
91
</para>
92
93
<para>
94
该指令的参数可以为下面的内容:
95
<list type="tag">
96
97
<tag-name><literal>none</literal></tag-name>
98
<tag-desc>
99
缺少<header>Referer</header>请求头;
100
</tag-desc>
101
102
<tag-name><literal>blocked</literal></tag-name>
103
<tag-desc>
104
<header>Referer</header> 请求头存在,但是它的值被防火墙或者代理服务器删除;
105
这些值都不以“<literal>http://</literal>” 或者 “<literal>https://</literal>”字符串作为开头;
106
</tag-desc>
107
108
<tag-name><literal>server_names</literal></tag-name>
109
<tag-desc>
110
<header>Referer</header> 请求头包含某个虚拟主机名;
111
</tag-desc>
112
113
<tag-name>任意字符串</tag-name>
114
<tag-desc>
115
定义一个服务器名和可选的URI前缀。服务器名允许在开头或结尾使用“<literal>*</literal>”符号。
116
当nginx检查时,<header>Referer</header>请求头里的服务器端口将被忽略。
117
</tag-desc>
118
119
<tag-name>正则表达式</tag-name>
120
<tag-desc>
121
必须以“<literal>~</literal>”符号作为开头。
122
需要注意的是表达式会从“<literal>http://</literal>”或者“<literal>https://</literal>”之后的文本开始匹配。
123
</tag-desc>
124
125
</list>
126
</para>
127
128
<para>
129
实例:
130
<example>
131
valid_referers none blocked server_names
132
*.example.com example.* www.example.org/galleries/
133
~\.google\.;
134
</example>
135
</para>
136
137
</directive>
138
139
</section>
140
141
</module>
142
143