Skip to content

Commit d6ee6ed

Browse files
committed
Add ngx_http_upstream_module etc.
1 parent 87f36e5 commit d6ee6ed

File tree

8 files changed

+1284
-14
lines changed

8 files changed

+1284
-14
lines changed

SUMMARY.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
- [贡献导引](CONTRIBUTING.md)
22
- [介绍](README.md)
33
- [安装 nginx](介绍/安装nginx.md)
4+
- [从源码构建 nginx](How-To/从源码构建nginx.md)
45
- [初学者指南](介绍/初学者指南.md)
56
- [管理指南](https://docs.nginx.com/nginx/admin-guide/)(忽略)
67
- [控制 nginx](介绍/控制nginx.md)
@@ -20,7 +21,6 @@
2021
- 其他
2122
- [Linux 软件包](其他/linux包.md)
2223
- How-To
23-
- [从源码构建 nginx](How-To/从源码构建nginx.md)
2424
- [在 Win32 平台上使用 Visual C 构建 nginx](How-To/在Win32平台上使用VisualC构建nginx.md)
2525
- [设置 Amazon EC2 的 Nginx Plus 环境](https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-plus-amazon-web-services/)(忽略)
2626
- [使用 DTrace pid 提供程序调试 nginx](How-To/使用DTrace_pid提供程序调试nginx.md)
@@ -83,10 +83,10 @@
8383
- [ngx_http_status_module(过时)](模块参考/http/ngx_http_status_module.md)
8484
- [ngx_http_stub_status_module](模块参考/http/ngx_http_stub_status_module.md)
8585
- [ngx_http_sub_module](模块参考/http/ngx_http_sub_module.md)
86-
- ngx_http_upstream_module
87-
- ngx_http_upstream_conf_module
88-
- ngx_http_upstream_hc_module
89-
- ngx_http_userid_module
86+
- [ngx_http_upstream_module](模块参考/http/ngx_http_upstream_module.md)
87+
- [ngx_http_upstream_conf_module](模块参考/http/ngx_http_upstream_conf_module.md)
88+
- [ngx_http_upstream_hc_module](模块参考/http/ngx_http_upstream_hc_module.md)
89+
- [ngx_http_userid_module](模块参考/http/ngx_http_userid_module.md)
9090
- ngx_http_uwsgi_module
9191
- ngx_http_v2_module
9292
- ngx_http_xslt_module

介绍/Nginx如何处理请求.md

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
# nginx 如何处理请求
22

3-
- [基于名称的虚拟服务器](#基于名称的虚拟服务器)
4-
- [如何使用未定义的server名称来阻止处理请求](#如何使用未定义的server名称来阻止处理请求)
5-
- [一个简单的PHP站点配置](#一个简单的PHP站点配置)
3+
- [基于名称的虚拟服务器](#name_based_virtual_servers)
4+
- [如何使用未定义的 server 名称来阻止处理请求](#how_to_prevent_undefined_server_names)
5+
- [基于名称和 IP 混合的虚拟服务器](#mixed_name_ip_based_servers)
6+
- [一个简单的 PHP 站点配置](#simple_php_site_configuration)
7+
8+
<a id="name_based_virtual_servers"></a>
69

710
## 基于名称的虚拟服务器
11+
812
nginx 首先决定哪个 `server` 应该处理请求,让我们从一个简单的配置开始,三个虚拟服务器都监听了 `*:80` 端口:
913

1014
```nginx
@@ -41,7 +45,10 @@ server {
4145
4246
请注意,`default_server``listen port` 的属性,而不是 `server_name` 的。之后会有更多关于这方面的内容。
4347

44-
## 如何使用未定义的server名称来阻止处理请求
48+
<a id="how_to_prevent_undefined_server_names"></a>
49+
50+
## 如何使用未定义的 server 名称来阻止处理请求
51+
4552
如果不允许没有 “Host” header 字段的请求,可以定义一个丢弃请求的 server:
4653

4754
```nginx
@@ -56,7 +63,10 @@ server {
5663

5764
> 自 0.8.48 版本开始,这是 `server` 名称的默认设置,因此可以省略 `server name ""`。在早期版本中,机器的主机名被作为 `server` 的默认名称。
5865
66+
<a id="mixed_name_ip_based_servers"></a>
67+
5968
## 基于名称和 IP 混合的虚拟服务器
69+
6070
让我们看看更加复杂的配置,其中一些虚拟服务器监听在不同的 IP 地址上监听:
6171

6272
```nginx
@@ -103,7 +113,10 @@ server {
103113
}
104114
```
105115

106-
## 一个简单的PHP站点配置
116+
<a id="simple_php_site_configuration"></a>
117+
118+
## 一个简单的 PHP 站点配置
119+
107120
现在让我们来看看 nginx 是如何选择一个 `location` 来处理典型的简单 PHP 站点的请求:
108121

109122
```nginx
@@ -154,4 +167,5 @@ nginx 首先忽略排序搜索具有最明确字符串的前缀 `location`。在
154167
由 Brian Mercer 编辑
155168

156169
## 原文
170+
157171
- [http://nginx.org/en/docs/http/request_processing.html](http://nginx.org/en/docs/http/request_processing.html)

介绍/服务器名称.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ server {
9999
## 其他名称
100100
有一些服务器名称需要被特别处理。
101101

102-
如果需要处理一个在不是默认的 [server](http://nginx.org/en/docs/http/ngx_http_core_module.html#server) 块中的没有Host” header 域的请求,应该指定一个空名称:
102+
如果需要处理一个在不是默认的 [server](http://nginx.org/en/docs/http/ngx_http_core_module.html#server) 块中的没有 **Host** 头字段的请求,应该指定一个空名称:
103103

104104
```nginx
105105
server {
@@ -114,7 +114,7 @@ server {
114114
115115
如果服务器名称被定义为 `$hostname`(0.9.4),则使用机器的主机名。
116116

117-
如果有人使用 IP 地址而不是服务器名称来发出请求,则 Host 请求 header 域将包含 IP 地址,可以使用 IP 地址作为服务器名称来处理请求。
117+
如果有人使用 IP 地址而不是服务器名称来发出请求,则 **Host** 请求 header 域将包含 IP 地址,可以使用 IP 地址作为服务器名称来处理请求。
118118

119119
```nginx
120120
server {

介绍/连接处理方式.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ nginx 支持多种连接处理方式,每一种方式是否可用取决于所
99
- **kqueue**,在 FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0, 和 macOS 使用有效。
1010
- **epoll**,在 Linux 2.6+ 上使用有效。
1111

12-
> 从1.11.3起支持EPOLLRDHUP(Linux 2.6.17,glibc 2.8)和EPOLLEXCLUSIVE(Linux 4.5,glibc 2.24)标志。一些类似于SuSE 8.2这样的老版本提供了对2.4内核支持epll的补丁
12+
> 从 1.11.3 起支持 EPOLLRDHUP(Linux 2.6.17,glibc 2.8)和 EPOLLEXCLUSIVE(Linux 4.5,glibc 2.24)标志。一些类似于 SuSE 8.2 这样的老版本提供了对 2.4 内核支持 epll 的补丁
1313
1414
- **/dev/poll**,在 Solaris 7 11/99+,HP / UX 11.22+(eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+ 有效。
15-
- **eventport**,事件端口,在 Solaris 10+有效(由于已知问题,推荐使用 `/dev/poll` 方式代替)。
15+
- **eventport**,事件端口,在 Solaris 10+ 有效(由于已知问题,推荐使用 `/dev/poll` 方式代替)。
1616

1717
## 原文档
1818

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
# ngx_http_upstream_conf_module
2+
3+
- [示例配置](#example_configuration)
4+
- [指令](#directives)
5+
- [upstream_conf](#upstream_conf)
6+
7+
**直到 1.13.10 版本,它被 1.13.3 中的 [ngx_http_api_module](ngx_http_api_module.md) 模块所取代。**
8+
9+
`ngx_http_upstream_conf_module` 模块允许通过简单的 HTTP 接口即时配置上游(upstream)服务器组,而无需重新启动 nginx。[http](ngx_http_upstream_module.md#zone)[](ngx_stream_upstream_module.md#zone)服务器组必须驻留在共享内存中。
10+
11+
> 该模块作为[商业订阅](http://nginx.com/products/?_ga=2.70698388.504417624.1562407216-1811470965.1562407216)部分提供,
12+
13+
<a id="example_configuration"></a>
14+
15+
## 示例配置
16+
17+
```nginx
18+
upstream backend {
19+
zone upstream_backend 64k;
20+
21+
...
22+
}
23+
24+
server {
25+
location /upstream_conf {
26+
upstream_conf;
27+
allow 127.0.0.1;
28+
deny all;
29+
}
30+
}
31+
```
32+
33+
<a id="directives"></a>
34+
35+
## 指令
36+
37+
### upstream_conf
38+
39+
|\-|说明|
40+
|:------|:------|
41+
|**语法**|**upstream_conf**;|
42+
|**默认**|——|
43+
|**上下文**|location|
44+
45+
在 location 中引入该指令,开启上游配置 HTTP 接口。 应[限制](ngx_http_core_module.md#satisfy)访问此 location。
46+
47+
配置命令可用于:
48+
49+
- 查看组配置
50+
- 查看、修改或删除服务器
51+
- 添加新服务器
52+
53+
> 由于组中的地址不要求唯一,因此组中的服务器使用 ID 引用。添加新服务器或查看组配置时,会自动分配 ID 并显示 ID。
54+
55+
配置命令作为请求参数传入,例如:
56+
57+
```
58+
http://127.0.0.1/upstream_conf?upstream=backend
59+
```
60+
61+
支持以下参数:
62+
63+
- `stream=`
64+
65+
选择一个 [stream](../stream/ngx_stream_upstream_module.md) 上游服务器组。如果没有此参数,将选择一个 [http](ngx_http_upstream_module.md) 上游服务器组。
66+
67+
- `upstream=name`
68+
69+
选择要使用的组。此参数是必需的。
70+
71+
- `id=number`
72+
73+
选择一个要查看、修改或删除的服务器。
74+
75+
- `remove=`
76+
77+
从组中删除一个服务器。
78+
79+
- `add=`
80+
81+
向组中添加一个新服务器。
82+
83+
- `backup=`
84+
85+
需要添加一个备用服务器。
86+
87+
> 在 1.7.2 版之前,查看、修改或删除现有备用服务器还需要 `backup=` 参数。
88+
89+
- `server=address`
90+
91+
[http](ngx_http_upstream_module.md#server)[stream](../stream/ngx_stream_upstream_module.md#server) 上游服务器的 `address` 参数相同。
92+
93+
添加服务器时,可以将其指定为一个域名。这种情况下,将监视与域名对应的 IP 地址的更改并自动应用于上游配置,无需重新启动 nginx(1.7.2)。这需要 [http](ngx_http_upstream_module.md#server)[stream](../stream/ngx_stream_upstream_module.md#server) 块中的 `resolver` 指令。另请参阅 [http](ngx_http_upstream_module.md#server)[stream](../stream/ngx_stream_upstream_module.md#server) 上游服务器的 `resolve` 参数。
94+
95+
- `service=name`
96+
97+
[http](ngx_http_upstream_module.md#service)[stream](../stream/ngx_stream_upstream_module.md#service) 上游服务器的 `service` 参数相同(1.9.13)。
98+
99+
- `weight=number`
100+
101+
[http](ngx_http_upstream_module.md#weight)[stream](../stream/ngx_stream_upstream_module.md#weight) 上游服务器的 `weight` 参数相同。
102+
103+
- `max_conns=number`
104+
105+
[http](ngx_http_upstream_module.md#max_conns)[stream](../stream/ngx_stream_upstream_module.md#max_conns) 上游服务器的 `max_conns` 参数相同。
106+
107+
- `max_fails=number`
108+
109+
[http](ngx_http_upstream_module.md#max_fails)[stream](../stream/ngx_stream_upstream_module.md#max_fails) 上游服务器的 `max_fails` 参数相同。
110+
111+
- `fail_timeout=time`
112+
113+
[http](ngx_http_upstream_module.md#fail_timeout)[stream](../stream/ngx_stream_upstream_module.md#fail_timeout) 上游服务器的 `fail_timeout` 参数相同。
114+
115+
- `slow_start=time`
116+
117+
[http](ngx_http_upstream_module.md#slow_start)[stream](../stream/ngx_stream_upstream_module.md#slow_start) 上游服务器的 `slow_start` 参数相同。
118+
119+
- `down=`
120+
121+
[http](ngx_http_upstream_module.md#down)[stream](../stream/ngx_stream_upstream_module.md#down) 上游服务器的 `down` 参数相同。
122+
123+
- `drain=`
124+
[http](ngx_http_upstream_module.md#draining) 上游服务器置为 `draining` 模式(1.7.5)。在此模式下,只有绑定到服务器的请求才会被代理。
125+
126+
- `up=`
127+
128+
[http](ngx_http_upstream_module.md#down)[stream](../stream/ngx_stream_upstream_module.md#down) 上游服务器的 `down` 参数相反。
129+
130+
- `route=string`
131+
132+
[http](ngx_http_upstream_module.md#route) 上游服务器的 `route` 参数相同。
133+
134+
前三个参数会选择一个对象。这可以是整个 http 或 stream 上游服务器组,也可以是特定服务器。如果没有其他参数,则会显示所选组或服务器的配置。
135+
136+
例如,要查看整个组的配置,请发送:
137+
138+
```
139+
http://127.0.0.1/upstream_conf?upstream=backend
140+
```
141+
142+
要查看特定服务器的配置,还要指定其 ID:
143+
144+
```
145+
http://127.0.0.1/upstream_conf?upstream=backend&id=42
146+
```
147+
148+
要添加新服务器,请在 `server=` 参数中指定其地址。如果未指定其他参数,添加服务器时将其他参数设置为其默认值(请参阅 [http](ngx_http_upstream_module.md#server)[stream](../stream/ngx_stream_upstream_module.md#server)`server` 指令)。
149+
150+
例如,要添加一个新的主服务器,请发送:
151+
152+
```
153+
http://127.0.0.1/upstream_conf?add=&upstream=backend&server=127.0.0.1:8080
154+
```
155+
156+
要添加一个备用服务器,发送:
157+
158+
```
159+
http://127.0.0.1/upstream_conf?add=&upstream=backend&backup=&server=127.0.0.1:8080
160+
```
161+
162+
要添加一个新的主服务器,将其参数设置为非默认值并将其标记为 `down`,发送:
163+
164+
```
165+
http://127.0.0.1/upstream_conf?add=&upstream=backend&server=127.0.0.1:8080&weight=2&down=
166+
```
167+
168+
删除一个服务器,指定其 ID:
169+
170+
```
171+
http://127.0.0.1/upstream_conf?remove=&upstream=backend&id=42
172+
```
173+
174+
讲一个现有的服务器标记为 `down`,发送:
175+
176+
```
177+
http://127.0.0.1/upstream_conf?upstream=backend&id=42&down=
178+
```
179+
180+
修改一个现有服务器的地址,发送:
181+
182+
```
183+
http://127.0.0.1/upstream_conf?upstream=backend&id=42&server=192.0.2.3:8123
184+
```
185+
186+
修改一个现有服务器的其他参数,发送:
187+
188+
```
189+
http://127.0.0.1/upstream_conf?upstream=backend&id=42&max_fails=3&weight=4
190+
```
191+
192+
以上示例适用于 [http](ngx_http_upstream_module.md) 上游服务器组。[stream](../stream/ngx_stream_upstream_module.md) 上游服务器组需要加上 `stream=` 参数。
193+
194+
## 原文档
195+
196+
- [http://nginx.org/en/docs/http/ngx_http_upstream_conf_module.html](http://nginx.org/en/docs/http/ngx_http_upstream_conf_module.html)

0 commit comments

Comments
 (0)