@@ -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
6464Web 服务器的一个重要任务是提供文件(比如图片或者静态 HTML 页面)服务。您将实现一个示例,根据请求,将提供来自不同的本地目录的文件: ` /data/www ` (可能包含 HTML 文件)和 ` /data/images ` (包含图片)。这需要编辑配置文件,在 ` http ` 中配置一个包含两个 ` location ` 块的 ` server ` 块指令。
6565
66+ 首先,创建 ` /data/www ` 目录将包含任何文本内容的 ` index.html ` 文件放入其中,创建 ` /data/images ` 目录然后放一些图片进去。
67+
68+ 其次,打开这个配置文件, 默认配置文件已经包含几个服务器块示例,大部分是已经注释掉的。现在注释掉这些块并且启动一个新的 ` server ` 块。
69+
6670``` nginx
6771http {
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 {
114118nginx -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
142146server {
@@ -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
187191nginx 可被用于将请求路由到运行了使用各种框架和 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
192196server {
0 commit comments