Skip to content

Commit d16279d

Browse files
committed
Add some modules of http and stream
1 parent 7813dff commit d16279d

9 files changed

+840
-10
lines changed

SUMMARY.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@
7171
- [ngx_http_mp4_module](模块参考/http/ngx_http_mp4_module.md)
7272
- [ngx_http_perl_module](模块参考/http/ngx_http_perl_module.md)
7373
- [ngx_http_random_index_module](模块参考/http/ngx_http_random_index_module.md)
74-
- ngx_http_realip_module
75-
- ngx_http_referer_module
74+
- [ngx_http_realip_module](模块参考/http/ngx_http_realip_module.md)
75+
- [ngx_http_referer_module](模块参考/http/ngx_http_referer_module.md)
7676
- ngx_http_rewrite_module
7777
- ngx_http_scgi_module
7878
- ngx_http_secure_link_module
@@ -103,11 +103,11 @@
103103
- Stream
104104
- [ngx_stream_core_module](模块参考/stream/ngx_stream_core_module.md)
105105
- [ngx_stream_access_module](模块参考/stream/ngx_stream_access_module.md)
106-
- ngx_stream_geo_module
107-
- ngx_stream_geoip_module
108-
- ngx_stream_js_module
109-
- ngx_stream_limit_conn_module
110-
- ngx_stream_log_module
106+
- [ngx_stream_geo_module](模块参考/stream/ngx_stream_geo_module.md)
107+
- [ngx_stream_geoip_module](模块参考/stream/ngx_stream_geoip_module.md)
108+
- [ngx_stream_js_module](模块参考/stream/ngx_stream_js_module.md)
109+
- [ngx_stream_limit_conn_module](模块参考/stream/ngx_stream_limit_conn_module.md)
110+
- [ngx_stream_log_module](模块参考/stream/ngx_stream_log_module.md)
111111
- ngx_stream_map_module
112112
- ngx_stream_proxy_module
113113
- [ngx_stream_realip_module](模块参考/stream/ngx_stream_realip_module.md)

模块参考/http/ngx_http_log_module.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ access_log /spool/logs/nginx-access.log compression buffer=32k;
5353
access_log /path/to/log.gz combined gzip flush=5m;
5454
```
5555

56-
> 要使 gzip 压缩起作用,必须使用 zlib 库构建 nginx
56+
> 要使 gzip 压缩起作用,必须在构建 nginx 时使用 zlib 库
5757
5858
文件路径可以包含变量(0.7.6+),但存在一些限制:
5959

@@ -84,7 +84,7 @@ access_log /path/to/access.log combined if=$loggable;
8484

8585
|\-|说明|
8686
|------:|------|
87-
|**语法**|**log_format** `name [escape=default|json|none] string ...`;|
87+
|**语法**|**log_format** `name [escape=default\|json\|none] string ...`;|
8888
|**默认**|log_format combined "...";|
8989
|**上下文**|http|
9090

@@ -170,7 +170,7 @@ log_format combined '$remote_addr - $remote_user [$time_local] '
170170

171171
- `valid`
172172

173-
设置检查文件是否仍然存在同名的时间,默认为 60 秒
173+
设置检查同名文件是否仍然存在的时间,默认为 60 秒
174174

175175
- `off`
176176

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# ngx_http_realip_module
2+
3+
- [示例配置](#example_configuration)
4+
- [指令](#directives)
5+
- [set_real_ip_from](#set_real_ip_from)
6+
- [real_ip_header](#real_ip_header)
7+
- [real_ip_recursive](#real_ip_recursive)
8+
- [内嵌变量](#embedded_variables)
9+
10+
`ngx_http_realip_module` 模块用于将客户端地址和可选端口更改为发送的指定的头字段。
11+
12+
默认情况下不构建此模块,可在构建时使用 `--with-http_realip_module` 配置参数启用。
13+
14+
<a id="example_configuration"></a>
15+
16+
## 示例配置
17+
```nginx
18+
set_real_ip_from 192.168.1.0/24;
19+
set_real_ip_from 192.168.2.1;
20+
set_real_ip_from 2001:0db8::/32;
21+
real_ip_header X-Forwarded-For;
22+
real_ip_recursive on;
23+
```
24+
25+
<a id="directives"></a>
26+
27+
## 指令
28+
29+
### set_real_ip_from
30+
31+
|\-|说明|
32+
|:------|:------|
33+
|**语法**|**set_real_ip_from** `address` &#124; `CIDR` &#124; `unix:`;|
34+
|**默认**|——|
35+
|**上下文**|http、server、location|
36+
37+
定义已知可发送正确替换地址的可信地址。如果指定了特殊值 `unix:`,则所有 UNIX 域套接字都将受信任。也可以使用主机名(1.13.1)指定可信地址。
38+
39+
> 从 1.3.0 版本和 1.2.1 版本开始支持 IPv6 地址。
40+
41+
### real_ip_header
42+
43+
|\-|说明|
44+
|:------|:------|
45+
|**语法**|**real_ip_header** `field` &#124; `X-Real-IP` &#124; `X-Forwarded-For` &#124; `proxy_protocol`;|
46+
|**默认**|real_ip_header X-Real-IP;|
47+
|**上下文**|http、server、location|
48+
49+
定义请求头字段,其值将用于替换客户端地址。
50+
51+
包含可选端口的请求头字段值也用于替换客户端端口(1.11.0)。 应根据 [RFC 3986](https://tools.ietf.org/html/rfc3986) 指定地址和端口。
52+
53+
`proxy_protocol` 参数(1.5.12)将客户端地址更改为 PROXY 协议头中的地址。必须先通过在 [listen](ngx_http_core_module.md#listen) 指令中设置 `proxy_protocol` 参数来启用 PROXY 协议。
54+
55+
### real_ip_recursive
56+
57+
|\-|说明|
58+
|:------|:------|
59+
|**语法**|**real_ip_recursive** `on` &#124; `off`;|
60+
|**默认**|real_ip_recursive off;|
61+
|**上下文**|http、server、location|
62+
|**提示**|该指令在 1.3.0 版本和 1.2.1 版本中出现|
63+
64+
`variable` 设置为给定的 JWT claim 参数 `name`
65+
66+
### auth_jwt_key_file
67+
68+
|\-|说明|
69+
|:------|:------|
70+
|**语法**|**auth_jwt_key_file** `file`;|
71+
|**默认**|——|
72+
|**上下文**|http、server、location|
73+
74+
如果禁用递归搜索,则匹配其中一个可信地址的原始客户端地址替换为 [real_ip_header](ngx_http_realip_module.md#real_ip_header) 指令定义的请求头字段中发送的最后一个地址。如果启用了递归搜索,则匹配其中一个可信地址的原始客户端地址替换为请求头字段中发送的最后一个非受信任地址。
75+
76+
<a id="embedded_variables"></a>
77+
78+
## 内嵌变量
79+
80+
- `$realip_remote_addr`
81+
82+
原始客户端地址
83+
84+
- `$realip_remote_port`
85+
86+
原始客户端端口
87+
88+
## 原文档
89+
[http://nginx.org/en/docs/http/ngx_http_realip_module.html](http://nginx.org/en/docs/http/ngx_http_realip_module.html)
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
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` &#124; `X-Real-IP` &#124; `X-Forwarded-For` &#124; `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` &#124; `blocked` &#124; `server_names` &#124; `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)
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
# ngx_stream_geo_module
2+
3+
- [示例配置](#example_configuration)
4+
- [指令](#directives)
5+
- [geo](#geo)
6+
7+
`ngx_stream_geo_module` 模块(1.11.3)用于创建依赖于客户端 IP 地址的变量。
8+
9+
<a id="example_configuration"></a>
10+
11+
## 示例配置
12+
13+
```nginx
14+
geo $geo {
15+
default 0;
16+
17+
127.0.0.1 2;
18+
192.168.1.0/24 1;
19+
10.1.0.0/16 1;
20+
21+
::1 2;
22+
2001:0db8::/32 1;
23+
}
24+
```
25+
26+
<a id="directives"></a>
27+
28+
## 指令
29+
30+
### geo
31+
32+
|\-|说明|
33+
|------:|------|
34+
|**语法**|**geo** `[$address] $variable { ... }`;|
35+
|**默认**|——|
36+
|**上下文**|stream|
37+
38+
描述指定变量的值与客户端 IP 地址的依赖关系。默认情况下,地址取自 `$remote_addr` 变量,但也可以从其他变量中获取,例如:
39+
40+
```nginx
41+
geo $arg_remote_addr $geo {
42+
...;
43+
}
44+
```
45+
46+
> 由于变量仅在使用时进行求值,因此即使存在大量已声明的 `geo` 变量增加连接处理的额外成本。
47+
48+
如果变量(`$variable`)的值不是有效的 IP 地址,则使用 `255.255.255.255` 地址。
49+
50+
地址(`$address`)可为 CIDR 记法中的前缀(包括单个地址)或作为范围。
51+
52+
还支持以下特殊参数:
53+
54+
- `delete`
55+
56+
删除指定的网络
57+
58+
- `default`
59+
60+
如果客户端地址与所有指定的地址都不匹配,则设置为该变量的值。当以 CIDR 记法指定地址时,使用 `0.0.0.0/0``::/0` 而不是默认值。如果未指定 `default`,则默认值为空字符串。
61+
62+
- `include`
63+
64+
包含一个有地址和值的文件,文件中可以有多个记录。
65+
66+
- `ranges`
67+
68+
表示地址指定为范围形式。这个参数应该放在第一个。要加快地理数据的加载速度,地址应按升序排列。
69+
70+
示例:
71+
72+
```nginx
73+
geo $country {
74+
default ZZ;
75+
include conf/geo.conf;
76+
delete 127.0.0.0/16;
77+
78+
127.0.0.0/24 US;
79+
127.0.0.1/32 RU;
80+
10.1.0.0/16 RU;
81+
192.168.1.0/24 UK;
82+
}
83+
```
84+
85+
`conf/geo.conf` 文件包含以下内容:
86+
87+
```
88+
10.2.0.0/16 RU;
89+
192.168.2.0/24 RU;
90+
```
91+
92+
使用最佳匹配的值。例如,对于 127.0.0.1 地址,将选择值 `RU`,而不是 `US`
93+
94+
范围指定示例:
95+
96+
```nginx
97+
geo $country {
98+
ranges;
99+
default ZZ;
100+
127.0.0.0-127.0.0.0 US;
101+
127.0.0.1-127.0.0.1 RU;
102+
127.0.0.1-127.0.0.255 US;
103+
10.1.0.0-10.1.255.255 RU;
104+
192.168.1.0-192.168.1.255 UK;
105+
}
106+
```
107+
108+
## 原文档
109+
[http://nginx.org/en/docs/stream/ngx_stream_geo_module.html](http://nginx.org/en/docs/stream/ngx_stream_geo_module.html)

0 commit comments

Comments
 (0)