Nginx新手指南

来源:互联网 发布:南京搜狗关键词优化 编辑:程序博客网 时间:2024/05/16 15:38

这篇指南是对于nginx做一个基础性的介绍,并描述了一些可以做的简单的工作任务。如果你还没有安装nginx请去安装页面将nginx安装好,毕竟我们假设读者都是已经安装好nginx。这篇指南会描述如何启动 停止以及重新配置,并解释其配置文件的结构,告诉你如何建立起nginx分配静态资源,如何把nginx配置成proxy server服务。以及如何使用FastCGI 应用去连接nginx。

nginx有一个主进程和一些工作进程。主进程的主要目的在于阅读和评估配置以及维护工作进程。工作进程执行实际的请求进程。nginx利用事件驱动模型和给予OS的机制有效的在各个工作进程中进行分配。许多工作进程在配置文件中被定义好,有的是通过设置好的配置,或者自动分配到可以使用的cup核心上。

使用nginx和其模块工作实际取决于配置文件,在默认情况下,配置文件名为:nginx.conf 其位于文件目录中的

/usr/local/nginx/conf 或/etc/nginx  或/usr/local/etc/nginx

启动 停止和重新加载配置

要开启nginx,首先要运行执行文件,一旦nginx被启动,其就会被-s参数调用的可执行文件所控制,具体命令行如下:

nginx -s signal
这里的signal可以是
stop —— 快速关闭
quit —— 逐步关闭
reload —— 重新加载配置文件
reopen —— 重新打开log文件

比如:我们为了等待工作进程完成当前服务请求后在停止nginx进程,我们就可以使用

nginx -s quit

只有通过命令行重新加载配置文件,更改过后的配置才会得到应用。所以我们通过如下命令行进行执行:

nginx -s reload

一旦主进程接收到signal去重新加载配置文件,它会检查新的配置文件是否存在语法错误,并试图应用已配置好的文件。如果成功,主进程就会开启新的工作进程并发送信息到旧工作进程中,请求这些旧进程关闭。否则,主进程就会回滚,并继续运行过往配置。旧工作进程接收到命令进行关闭,同事停止接收新的连接并继续处理当前服务请求,直到所有的请求服务完成。在此之后所有的旧工作程序退出。

通过使用Unix工具的帮助,signal也可以被送往nginx进程中,比如杀死 utility,在这种情况下,signal会通过赋予的进程ID直接送往进程。nginx主进程的进程ID默认会写在nginx.pid文件中,路径位置一般是

/usr/local/nginx/logs /var/run.

例如:主进程的ID是1628,那么我们要关闭当前进程的话:

kill -s QUIT 1628

如果我们要获取当前所有的正在运行的nginx进程列表,我们可以输入:

ps -ax | grep nginx

配置文件的结构

nginx由多个模块组成,这些模块在配置文件中被指令所控制。这些指令分为简单指令和区块指令。一个简单指令由名称和参数所组成,通过分号形式结束。一个区块指令和简单指令一样拥有同样的结构,但是不同的是其被({})所包裹。如果一个区块指令内部有其他指令,我们可以称之为context,(例如:events,http,server,location )

指令放置在配置文件中,在任何context之外的地方都被视为位于主context.

events和http指令位于主context中,server在http中,location在server中。

服务静态内容

一个重要的web服务任务就是服务文件(如HTML或imgs)。你可以基于当前请求运用一个实例。文件将从不同的本地文件夹中被服务:
/data/www包含html文件
/data/img包含图片文件
这需要配置文件的编辑,以及在http区块中的server区块里配置两个location区块。

首先,创建一个/data/www目录放入index.html文件,你可以在里面写入任何内容。创建/data/images目录,在里面放一些图片。

接下来,打开配置文件。在配置文件的默认设置中已经包含了一些server block的例子,但是大部分都是被注释掉了,因此,现在注释掉所有此类的block,启动一个新的server block吧

http{   server{   }}

一般情况,配置文件可能包含一些server block,我们通过监听的Ports端口和server name的不同进行区分。

一旦nginx决定某个server运行一个请求,它就会测试定义在请求头里的URI匹配server区块中定义的location指令里的参数。

在server block里增加 location block

location / {    root /data/www;}

在这个location block里定义了匹配请求中为”/”前缀的URI。为了匹配请求,在根目录中,URI将会被添加到指定的路径。如果匹配多个location blocks,nginx将会选择前缀最长的一个,location blocks则提供最短的前缀,只有当其他的location blocks匹配失败,这个block才会被使用。

接下来,增加第二个location block:

location /images/ {    root /data;}

结果我们整体看起来就像这样:

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

这就已经配置好标准的80端口的服务,你现在就可以访问你本地的http://localhost/为了响应/images/的URI请求。服务器将会从/data/images 目录中发送文件。比如,响应http://localhost/images/example.png请求,nginx将会发送/data/images/example.png文件,如果这个文件不存在,nginx将会发送404错误提示。

为了运用新的配置,我们可以输入如下:

nginx -s reload

设置一个简单的代理服务器

有时我们使用nginx是为建立一个代理服务器,这意味着一个服务器接收请求通过他们去代理服务,通过他们取回响应,然后发送给客户端。

我们将设置一个基础的代理服务器,它将服务图片请求,这些图片来自于本地目录,并发送所有其他的请求到代理服务端。

首先我们定义一个代理服务,我们添加一个server区块,内容部配置如下:

server {    listen 8080;    root /data/up1;    location / {    }}

这就建立了一个简单的8080端口的服务(在此之前尽管我们使用了80端口,监听指令并没有被规定),在本地文件系统中,映射了所有对于/data/up1目录的请求。我们创建这个目录,并放入index.html文件。注意root指令是放置在server context里。

0 0
原创粉丝点击