Skip to content

Commit e378050

Browse files
authored
Merge pull request DocsHome#27 from wuyachao/master
「初学者指南」章节更新
2 parents afa18f5 + fb6fe63 commit e378050

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

介绍/初学者指南.md

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,24 +53,28 @@ ps -ax | grep nginx
5353

5454
## 配置文件结构
5555

56-
nginx 是由配置文件中指定的指令控制模块组成。指令可分为简单指令和块指令。一个简单的指令是由空格分隔的名称和参数组成,并以分号 `;` 结尾。块指令具有与简单指令相同的结构,但不是以分号结尾,而是以大括号`{}`包围的一组附加指令结尾。如果块指令的大括号内部可以有其它指令,则称这个块指令为上下文(例如:`events``http``server``location`)。
56+
nginx 是由配置文件中指定的指令控制模块组成。指令可分为简单指令和块指令。一个简单的指令是由空格分隔的名称和参数组成,并以分号 `;` 结尾。块指令具有与简单指令相同的结构,但不是以分号结尾,而是以大括号`{}`包围的一组附加指令结尾。如果块指令的大括号内部可以有其它指令,则称这个块指令为上下文(例如:[events](http://nginx.org/en/docs/ngx_core_module.html#events)[http](http://nginx.org/en/docs/http/ngx_http_core_module.html#http)[server](http://nginx.org/en/docs/http/ngx_http_core_module.html#server)[location](http://nginx.org/en/docs/http/ngx_http_core_module.html#location))。
5757

58-
配置文件中被放置在任何上下文之外的指令都被认为是主上下文。`events``http` 指令在主上下文中`server``http` 中,`location` 又在 `server` 中。
58+
配置文件中被放置在任何上下文之外的指令都被认为是主上下文 [main](http://nginx.org/en/docs/ngx_core_module.html)`events``http` 指令在主 `main` 上下文中`server``http` 中,`location` 又在 `server` 中。
5959

6060
井号 `#` 之后的行的内容被视为注释。
6161

6262
## 提供静态内容服务
6363

6464
Web 服务器的一个重要任务是提供文件(比如图片或者静态 HTML 页面)服务。您将实现一个示例,根据请求,将提供来自不同的本地目录的文件: `/data/www`(可能包含 HTML 文件)和 `/data/images`(包含图片)。这需要编辑配置文件,在 `http` 中配置一个包含两个 `location` 块的 `server` 块指令。
6565

66+
首先,创建 `/data/www` 目录将包含任何文本内容的 `index.html` 文件放入其中,创建 `/data/images` 目录然后放一些图片进去。
67+
68+
其次,打开这个配置文件, 默认配置文件已经包含几个服务器块示例,大部分是已经注释掉的。现在注释掉这些块并且启动一个新的 `server` 块。
69+
6670
```nginx
6771
http {
6872
server {
6973
}
7074
}
7175
```
7276

73-
通常,配置文件可以包含几个由监听端口和服务器域名区分的 `server` 块指令。一旦 nginx 决定由哪个 `server` 来处理请求,它会根据 `server` 块中定义的 `location` 指令的参数来检验请求头中指定的URI。
77+
通常,配置文件可以包含几个由监听 [listen](http://nginx.org/en/docs/http/ngx_http_core_module.html#listen) 端口和服务器域名 [server names](http://nginx.org/en/docs/http/server_names.html) 区分的 `server` 块指令 [distinguished](http://nginx.org/en/docs/http/request_processing.html)。一旦 nginx 决定由哪个 `server` 来处理请求,它会根据 `server` 块中定义的 `location` 指令的参数来检验请求头中指定的URI。
7478

7579
添加如下 `location` 块指令到 `server` 块指令中:
7680

@@ -80,7 +84,7 @@ location / {
8084
}
8185
```
8286

83-
`location` 块指令指定 `/` 前缀与请求中的 URI 相比较。对于匹配的请求,URI 将被添加到根指令中指定的路径,即 `/data/ www`,以形成本地文件系统上所请求文件的路径。如果有几个匹配上的 `location` 块指令,nginx 将选择具有最长前缀的 `location` 块。上面的位置块提供最短的前缀,长度为 1,因此只有当所有其它 `location` 块不能匹配时,才会使用该块。
87+
`location` 块指令指定 `/` 前缀与请求中的 URI 相比较。对于匹配的请求,URI 将被添加到根指令 [root](http://nginx.org/en/docs/http/ngx_http_core_module.html#root) 中指定的路径,即 `/data/ www`,以形成本地文件系统上所请求文件的路径。如果有几个匹配上的 `location` 块指令,nginx 将选择具有最长前缀的 `location` 块。上面的位置块提供最短的前缀,长度为 1,因此只有当所有其它 `location` 块不能匹配时,才会使用该块。
8488

8589
接下来,添加第二个 `location` 指令快:
8690

@@ -114,7 +118,7 @@ server {
114118
nginx -s reload
115119
```
116120

117-
> 如果运行的效果没有在预期之中,您可以尝试从 `/usr/local/nginx/logs``/var/log/ nginx` 中的access.log和error.log日志文件中查找原因
121+
> 如果运行的效果没有在预期之中,您可以尝试从 `/usr/local/nginx/logs``/var/log/ nginx` 中的 `access.log``error.log` 日志文件中查找原因
118122
119123
## 设置一个简单的代理服务器
120124

@@ -134,9 +138,9 @@ server {
134138
}
135139
```
136140

137-
这是一个监听 8080 端口的简单服务器(以前,由于使用了标准 80 端口,所以没有指定 listen 指令),并将所有请求映射到本地文件系统上的 `/data/up1` 目录。创建此目录并将 `index.html` 文件放入其中。请注意,`root` 指令位于 `server` 上下文中。当选择用于处理请求的 `location` 块不包含 `root` 指令时,将使用此 `root` 指令。
141+
这是一个监听 8080 端口的简单服务器(以前,由于使用了标准 80 端口,所以没有指定 listen 指令),并将所有请求映射到本地文件系统上的 `/data/up1` 目录。创建此目录并将 `index.html` 文件放入其中。请注意,`root` 指令位于 `server` 上下文中。当选择用于处理请求的 `location` 块自身不包含 `root` 指令时,将使用此 `root` 指令。
138142

139-
接下来,在上一节中的服务器配置基础上进行修改,使其成为代理服务器配置。在第一个 `location` 块中,使用参数指定的代理服务器的协议,域名和端口(在本例中为 `http://localhost:8080`)放置在 proxy_pass 指令处:
143+
接下来,在上一节中的服务器配置基础上进行修改,使其成为代理服务器配置。在第一个 `location` 块中,使用参数指定的代理服务器的协议,域名和端口(在本例中为 `http://localhost:8080`)放置在 [proxy_pass](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass) 指令处:
140144

141145
```nginx
142146
server {
@@ -160,7 +164,7 @@ location ~ \.(gif|jpg|png)$ {
160164

161165
该参数是一个正则表达式,匹配所有以`.gif``.jpg``.png` 结尾的 URI。正则表达式之前应该是 `~`。相应的请求将映射到 `/data/images` 目录。
162166

163-
当 nginx 选择一个 `location` 块来提供请求时,它首先检查指定前缀的 `location` 指令,记住具有最长前缀的 `location`,然后检查正则表达式。如果与正则表达式匹配,nginx 会选择此 `location`,否则选择更早之前记住的那一个。
167+
当 nginx 选择一个 `location` 块来提供请求时,它首先检查指定前缀的 [location](http://nginx.org/en/docs/http/ngx_http_core_module.html#location) 指令,记住具有最长前缀的 `location`,然后检查正则表达式。如果与正则表达式匹配,nginx 会选择此 `location`,否则选择更早之前记住的那一个。
164168

165169
代理服务器的最终配置如下:
166170

@@ -186,7 +190,7 @@ server {
186190

187191
nginx 可被用于将请求路由到运行了使用各种框架和 PHP 等编程语言构建的应用程序的 FastCGI 服务器。
188192

189-
与 FastCGI 服务器协同工作的最基本的 nginx 配置是使用 `fastcgi_pass` 指令而不是 `proxy_pass` 指令,以及 `fastcgi_param` 指令来设置传递给 FastCGI 服务器的参数。假设 FastCGI 服务器可以在 localhost:9000 上访问。以上一节的代理配置为基础,用 `fastcgi_pass` 指令替换 `proxy_pass` 指令,并将参数更改为 `localhost:9000`。在 PHP 中,`SCRIPT_FILENAME` 参数用于确定脚本名称,`QUERY_STRING` 参数用于传递请求参数。最终的配置将是:
193+
与 FastCGI 服务器协同工作的最基本的 nginx 配置是使用 [fastcgi_pass](http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_pass) 指令而不是 `proxy_pass` 指令,以及 `fastcgi_param` 指令来设置传递给 FastCGI 服务器的参数。假设 FastCGI 服务器可以在 localhost:9000 上访问。以上一节的代理配置为基础,用 `fastcgi_pass` 指令替换 `proxy_pass` 指令,并将参数更改为 `localhost:9000`。在 PHP 中,`SCRIPT_FILENAME` 参数用于确定脚本名称,`QUERY_STRING` 参数用于传递请求参数。最终的配置将是:
190194

191195
```nginx
192196
server {

0 commit comments

Comments
 (0)