From 92c12a77f2f981eb482d67673de5342da825e094 Mon Sep 17 00:00:00 2001 From: wuyc Date: Tue, 16 Jul 2019 19:57:38 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SUMMARY.md | 1 + ...\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/SUMMARY.md b/SUMMARY.md index 7fe322e..e66bda3 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -1,6 +1,7 @@ - [贡献导引](CONTRIBUTING.md) - [介绍](README.md) - [安装 nginx](介绍/安装nginx.md) + - [源码安装nginx](How-To/从源码构建nginx.md) - [初学者指南](介绍/初学者指南.md) - [管理指南](https://docs.nginx.com/nginx/admin-guide/)(忽略) - [控制 nginx](介绍/控制nginx.md) diff --git "a/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" "b/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" index 0a8ab8a..5ef5edb 100644 --- "a/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" +++ "b/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" @@ -2,7 +2,7 @@ 本指南旨在介绍 Nginx 基本内容和一些在 Nginx 上可以完成的简单任务。这里假设您已经安装了 nginx,否则请参阅 [安装 nginx ](安装nginx.md) 页面。 本指南介绍如何启动、停止 nginx 和重新加载配置,解释配置文件的结构,并介绍如何设置 nginx 以提供静态内容服务,如何配置 nginx 作为代理服务器,以及如何将其连接到一个 FastCGI 应用程序。 -nginx 有一个主进程(Master)和几个工作进程(Worker)。主进程的主要目的是读取和评估配置,并维护工作进程。工作进程对请求进行处理。nginx 采用了基于事件模型和依赖于操作系统的机制来有效地在工作进程之间分配请求。工作进程的数量可在配置文件中定义,并且可以针对给定的配置进行修改,或者自动调整到可用 CPU 内核的数量(请参阅 worker_processes)。 +nginx 有一个主进程(Master)和几个工作进程(Worker)。主进程的主要目的是读取和评估配置,并维护工作进程。工作进程对请求进行处理。nginx 采用了基于事件模型和依赖于操作系统的机制来有效地在工作进程之间分配请求。工作进程的数量可在配置文件中定义,并且可以针对给定的配置进行修改,或者自动调整到可用 CPU 内核的数量(请参阅 [worker_processes](http://nginx.org/en/docs/ngx_core_module.html#worker_processes))。 配置文件决定了 nginx 及其模块的工作方式。默认情况下,配置文件名为 `nginx.conf`,并放在目录 `/usr/local/nginx/conf`,`/etc/nginx` 或 `/usr/local/etc/nginx` 中。 From 9dfc45dbe28fea21fc21cd9691499b163cbd89ff Mon Sep 17 00:00:00 2001 From: wuyc Date: Thu, 25 Jul 2019 19:00:55 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=88=9D=E5=AD=A6=E8=80=85=E6=8C=87?= =?UTF-8?q?=E5=8D=97.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...46\350\200\205\346\214\207\345\215\227.md" | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git "a/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" "b/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" index 5ef5edb..50b93ef 100644 --- "a/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" +++ "b/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" @@ -53,9 +53,9 @@ ps -ax | grep nginx ## 配置文件结构 -nginx 是由配置文件中指定的指令控制模块组成。指令可分为简单指令和块指令。一个简单的指令是由空格分隔的名称和参数组成,并以分号 `;` 结尾。块指令具有与简单指令相同的结构,但不是以分号结尾,而是以大括号`{}`包围的一组附加指令结尾。如果块指令的大括号内部可以有其它指令,则称这个块指令为上下文(例如:`events`,`http`,`server` 和 `location`)。 +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))。 -配置文件中被放置在任何上下文之外的指令都被认为是主上下文。`events` 和 `http` 指令在主上下文中,`server` 在 `http` 中,`location` 又在 `server` 中。 +配置文件中被放置在任何上下文之外的指令都被认为是主上下文 [main](http://nginx.org/en/docs/ngx_core_module.html)。`events` 和 `http` 指令在主 `main` 上下文中,`server` 在 `http` 中,`location` 又在 `server` 中。 井号 `#` 之后的行的内容被视为注释。 @@ -63,6 +63,10 @@ nginx 是由配置文件中指定的指令控制模块组成。指令可分为 Web 服务器的一个重要任务是提供文件(比如图片或者静态 HTML 页面)服务。您将实现一个示例,根据请求,将提供来自不同的本地目录的文件: `/data/www`(可能包含 HTML 文件)和 `/data/images`(包含图片)。这需要编辑配置文件,在 `http` 中配置一个包含两个 `location` 块的 `server` 块指令。 +首先,创建 `/data/www` 目录将包含任何文本内容的 `index.html` 文件放入其中,创建 `/data/images` 目录然后放一些图片进去。 + +其次,打开这个配置文件, 默认配置文件已经包含几个服务器块示例,大部分是已经注释掉的。现在注释掉这些块并且启动一个新的 `server` 块。 + ```nginx http { server { @@ -70,7 +74,7 @@ http { } ``` -通常,配置文件可以包含几个由监听端口和服务器域名区分的 `server` 块指令。一旦 nginx 决定由哪个 `server` 来处理请求,它会根据 `server` 块中定义的 `location` 指令的参数来检验请求头中指定的URI。 +通常,配置文件可以包含几个由监听 [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。 添加如下 `location` 块指令到 `server` 块指令中: @@ -80,7 +84,7 @@ location / { } ``` -该 `location` 块指令指定 `/` 前缀与请求中的 URI 相比较。对于匹配的请求,URI 将被添加到根指令中指定的路径,即 `/data/ www`,以形成本地文件系统上所请求文件的路径。如果有几个匹配上的 `location` 块指令,nginx 将选择具有最长前缀的 `location` 块。上面的位置块提供最短的前缀,长度为 1,因此只有当所有其它 `location` 块不能匹配时,才会使用该块。 +该 `location` 块指令指定 `/` 前缀与请求中的 URI 相比较。对于匹配的请求,URI 将被添加到根指令 [root](http://nginx.org/en/docs/http/ngx_http_core_module.html#root) 中指定的路径,即 `/data/ www`,以形成本地文件系统上所请求文件的路径。如果有几个匹配上的 `location` 块指令,nginx 将选择具有最长前缀的 `location` 块。上面的位置块提供最短的前缀,长度为 1,因此只有当所有其它 `location` 块不能匹配时,才会使用该块。 接下来,添加第二个 `location` 指令快: @@ -114,7 +118,7 @@ server { nginx -s reload ``` -> 如果运行的效果没有在预期之中,您可以尝试从 `/usr/local/nginx/logs` 或 `/var/log/ nginx` 中的access.log和error.log日志文件中查找原因。 +> 如果运行的效果没有在预期之中,您可以尝试从 `/usr/local/nginx/logs` 或 `/var/log/ nginx` 中的 `access.log` 和 `error.log` 日志文件中查找原因。 ## 设置一个简单的代理服务器 @@ -134,9 +138,9 @@ server { } ``` -这是一个监听 8080 端口的简单服务器(以前,由于使用了标准 80 端口,所以没有指定 listen 指令),并将所有请求映射到本地文件系统上的 `/data/up1` 目录。创建此目录并将 `index.html` 文件放入其中。请注意,`root` 指令位于 `server` 上下文中。当选择用于处理请求的 `location` 块不包含 `root` 指令时,将使用此 `root` 指令。 +这是一个监听 8080 端口的简单服务器(以前,由于使用了标准 80 端口,所以没有指定 listen 指令),并将所有请求映射到本地文件系统上的 `/data/up1` 目录。创建此目录并将 `index.html` 文件放入其中。请注意,`root` 指令位于 `server` 上下文中。当选择用于处理请求的 `location` 块自身不包含 `root` 指令时,将使用此 `root` 指令。 -接下来,在上一节中的服务器配置基础上进行修改,使其成为代理服务器配置。在第一个 `location` 块中,使用参数指定的代理服务器的协议,域名和端口(在本例中为 `http://localhost:8080`)放置在 proxy_pass 指令处: +接下来,在上一节中的服务器配置基础上进行修改,使其成为代理服务器配置。在第一个 `location` 块中,使用参数指定的代理服务器的协议,域名和端口(在本例中为 `http://localhost:8080`)放置在 [proxy_pass](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass) 指令处: ```nginx server { @@ -160,7 +164,7 @@ location ~ \.(gif|jpg|png)$ { 该参数是一个正则表达式,匹配所有以`.gif`,`.jpg` 或 `.png` 结尾的 URI。正则表达式之前应该是 `~`。相应的请求将映射到 `/data/images` 目录。 -当 nginx 选择一个 `location` 块来提供请求时,它首先检查指定前缀的 `location` 指令,记住具有最长前缀的 `location`,然后检查正则表达式。如果与正则表达式匹配,nginx 会选择此 `location`,否则选择更早之前记住的那一个。 +当 nginx 选择一个 `location` 块来提供请求时,它首先检查指定前缀的 [location](http://nginx.org/en/docs/http/ngx_http_core_module.html#location) 指令,记住具有最长前缀的 `location`,然后检查正则表达式。如果与正则表达式匹配,nginx 会选择此 `location`,否则选择更早之前记住的那一个。 代理服务器的最终配置如下: @@ -186,7 +190,7 @@ server { nginx 可被用于将请求路由到运行了使用各种框架和 PHP 等编程语言构建的应用程序的 FastCGI 服务器。 -与 FastCGI 服务器协同工作的最基本的 nginx 配置是使用 `fastcgi_pass` 指令而不是 `proxy_pass` 指令,以及 `fastcgi_param` 指令来设置传递给 FastCGI 服务器的参数。假设 FastCGI 服务器可以在 localhost:9000 上访问。以上一节的代理配置为基础,用 `fastcgi_pass` 指令替换 `proxy_pass` 指令,并将参数更改为 `localhost:9000`。在 PHP 中,`SCRIPT_FILENAME` 参数用于确定脚本名称,`QUERY_STRING` 参数用于传递请求参数。最终的配置将是: +与 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` 参数用于传递请求参数。最终的配置将是: ```nginx server { From fb6fe635e399fb168f5d299a280a610a6e469dd3 Mon Sep 17 00:00:00 2001 From: wuyc Date: Sat, 27 Jul 2019 10:48:46 +0800 Subject: [PATCH 3/3] =?UTF-8?q?Revert=20"=E6=B7=BB=E5=8A=A0=E7=9B=AE?= =?UTF-8?q?=E5=BD=95"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 92c12a77f2f981eb482d67673de5342da825e094. --- SUMMARY.md | 1 - ...\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/SUMMARY.md b/SUMMARY.md index e66bda3..7fe322e 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -1,7 +1,6 @@ - [贡献导引](CONTRIBUTING.md) - [介绍](README.md) - [安装 nginx](介绍/安装nginx.md) - - [源码安装nginx](How-To/从源码构建nginx.md) - [初学者指南](介绍/初学者指南.md) - [管理指南](https://docs.nginx.com/nginx/admin-guide/)(忽略) - [控制 nginx](介绍/控制nginx.md) diff --git "a/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" "b/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" index 50b93ef..4da4ff5 100644 --- "a/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" +++ "b/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" @@ -2,7 +2,7 @@ 本指南旨在介绍 Nginx 基本内容和一些在 Nginx 上可以完成的简单任务。这里假设您已经安装了 nginx,否则请参阅 [安装 nginx ](安装nginx.md) 页面。 本指南介绍如何启动、停止 nginx 和重新加载配置,解释配置文件的结构,并介绍如何设置 nginx 以提供静态内容服务,如何配置 nginx 作为代理服务器,以及如何将其连接到一个 FastCGI 应用程序。 -nginx 有一个主进程(Master)和几个工作进程(Worker)。主进程的主要目的是读取和评估配置,并维护工作进程。工作进程对请求进行处理。nginx 采用了基于事件模型和依赖于操作系统的机制来有效地在工作进程之间分配请求。工作进程的数量可在配置文件中定义,并且可以针对给定的配置进行修改,或者自动调整到可用 CPU 内核的数量(请参阅 [worker_processes](http://nginx.org/en/docs/ngx_core_module.html#worker_processes))。 +nginx 有一个主进程(Master)和几个工作进程(Worker)。主进程的主要目的是读取和评估配置,并维护工作进程。工作进程对请求进行处理。nginx 采用了基于事件模型和依赖于操作系统的机制来有效地在工作进程之间分配请求。工作进程的数量可在配置文件中定义,并且可以针对给定的配置进行修改,或者自动调整到可用 CPU 内核的数量(请参阅 worker_processes)。 配置文件决定了 nginx 及其模块的工作方式。默认情况下,配置文件名为 `nginx.conf`,并放在目录 `/usr/local/nginx/conf`,`/etc/nginx` 或 `/usr/local/etc/nginx` 中。