Nginx官网翻译

Beginner’s Guide

今天下午没有太多的事。就翻译了nginx官方的文章,比较仓促。语言上没有怎么雕琢。我会逐步完善。欢迎你们指正。
问号部分由于本人词穷,一时不知道用汉语表达,因此先空着。(手指骨折,单手打字,熬了好几个小时,因此文字漏洞应该比较多,找个时间再优化吧!)。
nginx官网文章地址:http://nginx.org/en/docs/begi...php

这个指导对nginx作了一个基础的的介绍和用nginx能够作的一些简单的任务,确保读者的的机器上已经安装了nginx,若是没有安装,请看安装nginx页面,这个指导描述了怎样开启,关闭和重启它的配置,解释配置文件的结构和描述怎样配置nginx的非静态服务,怎样配置nginx做为一个代理服务器和怎样把nginx与fastcgi应用链接起来。html

nginx有一个主进程和一些worker进程,主进程的主要目的是读取和执行配置和确保worker进程正常运行,worker进程处理真实的请求,nginx雇佣event-based模式和系统独立的机制去有效分发请求给worker进程。worker进程的数量被定义在配置文件中和被设置好的配置文件,或者自适应cup的核数。nginx

nginx的工做方式和模块被肯定在配置文件,配置文件的的默认是名字是nginx.conf,放在/usr/local/nginx/conf, /etc/nginx, 或者/usr/local/etc/nginx目录下。web

Starting, Stopping, and Reloading Configuration

运行可执行的文件,开启nginx,一旦nginx被开启,nginx经过可执行 -s parameter 控制。用如下的语法:正则表达式

nginx -s singal数组

如下是能够用到的信号:服务器

stop -快速关闭nginx框架

quit - 平滑的关闭nginx
reload - 从新加载配置文件
reopen - 从新打开日志文件ide

好比,中止worker进程去结束正在服务的外部请求。如下的命令能被执行:工具

nginx -s quit

注:这个命令的执行应该与开启nginx的用户是同一用户

被改变配置文件只有到从新加载配置后才能被应用,重启配置,执行如下命令:

nginx -s reload

一旦主进程收到重启配置的信号,nginx会检查新配置文件的语法的正确性和试着应用被提供的配置,若是成功,主进程会开启新的worker进程和发送一下信息到老的worker进程,要求老的worker进程关闭,不然,主进程将会回滚到改变前的配置和继续用老配置执行。老worker进程收到关闭的命令,中止接受新的链接和继续执行当前的请求直到全部的的请求被执行完毕。以后,老的worker进程退出。

对nginx进程发送的信号也可用unix工具的帮助。好比kill工具。这类信号被直接发送到一个被给定的进程ID的进程。nignx主进程的进程ID被默认写到nginx.pid文件中。此文件在/usr/local/nginx/logs 或者/var/run文件下。例如,若是主进程ID是1628,对nginx发送Quit信号关闭nginx。执行如下命令:

kill -s Quit 1628

获取全部正在运行的nginx进程,能够用ps工具,好比,用如下方式:

ps -ax | grep nginx

想要获取发送到nginx的更多信号,请看controller nginx

配置文件的结构

nginx是由在配置文件中被特定的指令控制的模块组成的。指令被划分红一些简单的指令和指令模块。一个简单的指令是由名字和以空格分离的参数组成,以”;”结尾。指令块有一样结构做为一个简单的指令。可是代替“;”,指令块是用”{}”结尾的。若是一个指令块内部有其余的指令。它被叫作context(例如:events,http,server,location)

运行静态内容

web 服务器的一个重要的任务是运行文件(好比 图片或者静态html页面)。你能够实现一个例子,经过一个请求。文件将会经过不一样的本地文件夹分发运行:/data/www (可能包括html文件) and /data/images (包含图片)。这要求编辑配置文件和etting up of a server block inside the http block with two location blocks.

首先,创建/data/www目录,而且放一个index.html文件(能够写入任何内容)在目录下,创建/data/images目录来存放图片。

下一步,打开配置文件,默认的配置文件已经包括了几个server块,大部分已经注释了,如今注释全部的区块而且开始建立一个新的sever块。

http {
    server {
    }
}

一般,配置文件可能包括多个server,这些server能够经过监听的端口和server_name区分开。一旦,nginx肯定是哪一个server来处理request ???????

添加如下location区块到sever区块中:

location / {
    root /data/www;
}

以上的location块指定"/"前缀与来自于request中的url作对比,对于匹配上的request,url将被添加到root指令指定的路径上去,这里是/data/www, ????。若是匹配上了好几个location区块,nginx将选择最长的那个前缀,长前缀location的优先级在最短前缀之上,因此若是所得的loaction区块都匹配失败,那么最短的loaction区块将被使用。

下面,添加第二个location区块:

location /images/ {
    root /data;
}

想要全部的请求匹配上/images/(loaction / 也能够匹配上全部的request,可是它有最短的前缀)

配置文件的最终样子应该像这样:

server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
}

这已经有一个监听标准80端口的服务器配置和一个能够经过http://localhost/访问的本地机器。对于以/images/开始的url的request的响应,服务器将发送来自/data/images目录下的文件。好比,对于http://localhost/images/examp...请求的回应,nginx将发送/data/images/example.png文件。若是文件不存在,nginx将发送404错误的回应指示。没有以/images/开始的url请求将被映射到/data/www目录下,例如,对于http://localhost/some/example...的请求,nginx将发送/data/www/some/example.html文件做为回应。

为了使用新的配置文件,启动还有启动的nginx服务,或者经过执行如下命令发送reload信号到nginx的主进程中:

nginx -s reload

在一些状况下,nginx不能工做,你能够试着在 /usr/local/nginx/logs或者/var/log/nginx目录下的access.log和error.log日志文件中找出缘由

Setting Up a Simple Proxy Server

nginx中最经常使用的一个是功能是把nginx做为代理服务器,这意味着一个服务器接收request,把request传给给代理服务器,从代理服务器回收响应信息,而后将这些信息发送给客户端。

咱们将配置一个基础的代理服务器,它用于处理图片请求(图片来自本地目录)和发送全部其余的request到代理服务器。在这个例子中,两个server将被定义到一个单独的nginx实例。

首先,经过添加一个sever块到nginx配置中来定义proxy server,配置文件内容以下:

server {
    listen 8080;
    root /data/up1;

    location / {
    }
}

这个简单的server监听的是8080端口,而且映射全部的请求到/data/up1目录下。建立/data/up1目录,并将index.html文件放到这个目录中,要注意的是root指令要放到server代码块中,???。

下一步,用以前的server配置,把sever配置修改为一个proxyserver配置。在第一个location块中,?用proxyserver指定的参数填充proxy_pass指令(在咱们这个例子中,是http://localhost:8080

server {
    location / {
        proxy_pass http://localhost:8080;
    }

    location /images/ {
        root /data;
    }
}

咱们将修改第二个loaction块,它把带有 /images/ 前缀的请求映射到到/data/images目录下,为了匹配带有特殊扩展名的图片请求,修改的location应该像这样:

location ~ \.(gif|jpg|png)$ {
    root /data/images;
}

这个参数是一个匹配全部以.gif,.jpg,.png结尾url的正则表达式。正则表达式应该优先于~匹配。符合的请求将被映射到/data/images目录下。

当nginx选择一个loaction去处理一个请求,它首先会检查指定前缀的loaction指令,记忆最长前缀的loaction,而后检查正则表达式。若是匹配到正则表达式,nginx选择这个loaction,??

最终的proxy server配置文件应该是这样的:

server {
    location / {
        proxy_pass http://localhost:8080/;
    }

    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}

这个server过滤以.gif, .jpg, .png 结尾的请求,而后将他们映射到 /data/images目录下,把他的请求传给上面配置我呢间中的proxy server。

为了应用新的配置文件,为了说明前面的描述,发送reload信号给nginx

这还有不少被用于配置proxy链接的指令 more

Setting Up FastCGI Proxying

nginx被用于指定request到用各类框架和例如php语言的程序的fastcgi服务器。

大多数基本的fastcgi的nginx配置用fastcgi_pass指令代替了proxy_pass 指令,而且fastcgi_param设置参数发送到fastcgi服务上,假设fastcgi服务是能够经过localhost:9000能够访问的,把前面内容的proxy配置文件做为一个基础。用fastcgi_pass指令代替proxy_pass 指令,而且设置proxy_pass为localhost:9000,在php中,SCRIPT_FILENAME 参数被用于肯定脚本名称,QUERY_STRING 参数被用于传递request参数,最终的配置文件应该是:

server {
    location / {
        fastcgi_pass  localhost:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param QUERY_STRING    $query_string;
    }

    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}

这个配置文件将把全部请求(除了静态图片的request)经过fastcgi协议 打到运行localhost:9000的代理服务器

相关文章
相关标签/搜索