File tree Expand file tree Collapse file tree 1 file changed +8
-4
lines changed Expand file tree Collapse file tree 1 file changed +8
-4
lines changed Original file line number Diff line number Diff line change 1
1
# nginx 如何处理请求
2
2
3
+ - [ 基于名称的虚拟服务器] ( #基于名称的虚拟服务器 )
4
+ - [ 如何使用未定义的server名称来阻止处理请求] ( #如何使用未定义的server名称来阻止处理请求 )
5
+ - [ 一个简单的PHP站点配置] ( #一个简单的PHP站点配置 )
6
+
3
7
## 基于名称的虚拟服务器
4
8
nginx 首先决定哪个 ` server ` 应该处理请求,让我们从一个简单的配置开始,三个虚拟服务器都监听了 ` *:80 ` 端口:
5
9
@@ -23,7 +27,7 @@ server {
23
27
}
24
28
```
25
29
26
- 在此配置中,nginx 仅检验请求的 header 域中的 ` Host ` ,以确定请求应该被路由到哪一个 ` server ` 。如果其值与任何的 ` server ` 名称不匹配,或者该请求根本不包含此 header 域,nginx 会将请求路由到该端口的默认 ` server ` 中。在上面的配置中,默认 ` server ` 是第一个(这是 nginx 的标准默认行为)。你也可以在 ` listen ` 指令中使用 ` default_server ` 参数,明确地设置默认的 ` server ` 。
30
+ 在此配置中,nginx 仅检验请求的 header 域中的 ` Host ` ,以确定请求应该被路由到哪一个 ` server ` 。如果其值与任何的 ` server ` 名称不匹配,或者该请求根本不包含此 header 域,nginx 会将请求路由到该端口的默认 ` server ` 中。在上面的配置中,默认 ` server ` 是第一个(这是 nginx 的标准默认行为)。你也可以在 [ listen] ( http://nginx.org/en/docs/http/ngx_http_core_module.html#listen ) 指令中使用 ` default_server ` 参数,明确地设置默认的 ` server ` 。
27
31
28
32
``` nginx
29
33
server {
@@ -37,7 +41,7 @@ server {
37
41
38
42
请注意,` default_server ` 是 ` listen port ` 的属性,而不是 ` server_name ` 的。之后会有更多关于这方面的内容。
39
43
40
- ## 如何使用未定义的 server 名称来阻止处理请求
44
+ ## 如何使用未定义的server名称来阻止处理请求
41
45
如果不允许没有 “Host” header 字段的请求,可以定义一个丢弃请求的 server:
42
46
43
47
``` nginx
@@ -75,7 +79,7 @@ server {
75
79
}
76
80
```
77
81
78
- 此配置中,nginx 首先根据 ` server ` 块的 ` listen ` 指令检验请求的 IP 和端口。之后,根据与 IP 和端口相匹配的 ` server ` 块的 ` server_name ` 项对请求的“Host” header 域进行检验。如果找不到服务器的名称(server_name),请求将由 ` default_server ` 处理。例如,在 ` 192.168.1.1:80 ` 上收到的对 ` www.example.com ` 的请求将由 ` 192.168.1.1:80 ` 端口的 ` default_server ` (即第一个 server)处理,因为没有 ` www.example.com ` 在此端口上定义。
82
+ 此配置中,nginx 首先根据 [ server] ( http://nginx.org/en/docs/http/ngx_http_core_module.html#server ) 块的 ` listen ` 指令检验请求的 IP 和端口。之后,根据与 IP 和端口相匹配的 ` server ` 块的 [ server_name] ( http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name ) 项对请求的“Host” header 域进行检验。如果找不到服务器的名称(server_name),请求将由 ` default_server ` 处理。例如,在 ` 192.168.1.1:80 ` 上收到的对 ` www.example.com ` 的请求将由 ` 192.168.1.1:80 ` 端口的 ` default_server ` (即第一个 server)处理,因为没有 ` www.example.com ` 在此端口上定义。
79
83
80
84
如上所述,` default_server ` 是 ` listen port ` 的属性,可以为不同的端口定义不同的 ` default_server ` :
81
85
@@ -99,7 +103,7 @@ server {
99
103
}
100
104
```
101
105
102
- ## 一个简单的 PHP 站点配置
106
+ ## 一个简单的PHP站点配置
103
107
现在让我们来看看 nginx 是如何选择一个 ` location ` 来处理典型的简单 PHP 站点的请求:
104
108
105
109
``` nginx
You can’t perform that action at this time.
0 commit comments