Skip to content

Commit 499b3b0

Browse files
author
wuyc
committed
Nginx如何处理请求.md
1 parent 6d27280 commit 499b3b0

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

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

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

3+
- [基于名称的虚拟服务器](#基于名称的虚拟服务器)
4+
- [如何使用未定义的server名称来阻止处理请求](#如何使用未定义的server名称来阻止处理请求)
5+
- [一个简单的PHP站点配置](#一个简单的PHP站点配置)
6+
37
## 基于名称的虚拟服务器
48
nginx 首先决定哪个 `server` 应该处理请求,让我们从一个简单的配置开始,三个虚拟服务器都监听了 `*:80` 端口:
59

@@ -23,7 +27,7 @@ server {
2327
}
2428
```
2529

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`
2731

2832
```nginx
2933
server {
@@ -37,7 +41,7 @@ server {
3741
3842
请注意,`default_server``listen port` 的属性,而不是 `server_name` 的。之后会有更多关于这方面的内容。
3943

40-
## 如何使用未定义的 server 名称来阻止处理请求
44+
## 如何使用未定义的server名称来阻止处理请求
4145
如果不允许没有 “Host” header 字段的请求,可以定义一个丢弃请求的 server:
4246

4347
```nginx
@@ -75,7 +79,7 @@ server {
7579
}
7680
```
7781

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` 在此端口上定义。
7983

8084
如上所述,`default_server``listen port` 的属性,可以为不同的端口定义不同的 `default_server`
8185

@@ -99,7 +103,7 @@ server {
99103
}
100104
```
101105

102-
## 一个简单的 PHP 站点配置
106+
## 一个简单的PHP站点配置
103107
现在让我们来看看 nginx 是如何选择一个 `location` 来处理典型的简单 PHP 站点的请求:
104108

105109
```nginx

0 commit comments

Comments
 (0)