Beginner’s Guide nginx初学者手册

译文原网页:http://nginx.org/en/docs/beginners_guide.html


nginx有一个master进程和多个worker进程。master进程的主要目的是去读配置,计算配置,以及维护worker进程。worker进程做真正的请求处理。
nginx实现了基于事件的模型,依靠操作系统的机制去有效地在worker进程之间分发请求。worker进程的数量定义在nginx配置文件中,有可能根据配置是固定的,也有可能根据CPU核心数量自适应的。


nginx -s reload
一旦master进程接收到了重新加载配置的信号,它会检查新的配置文件的字符有效性并且尝试去应用配置文件中提供的配置。如果检查成功,master进程开启新的worker进程,同时发送消息给旧的worker进程,要求它们关闭自己。
如果检查不成功,master进程就会回滚已经改变的并且继续用旧的配置工作。当旧的worker进程接收到了关闭的命令后,立刻停止接受新的连接,但会继续处理当前的请求直到所有这些请求都处理完了,这之后,旧的worker进程退出



配置文件的结构
nginx的模块控制是通过配置文件里制定的指令控制的。指令被分成简单的指令和块指令。一个简单的指令包含名字和参数,名字和参数之间用空格分开,以分号结尾。块指令结构和简单指令一样的,只是用“{}”代替“;”。
如果一个块指令里面有其他的指令,那这里面的指令就称作内容(比如:events,http,server和location)


服务静态内容
web服务器的一个重要任务是服务外部文件(比如images和静态html页面)这里我们将实现一个例子,根据不同的请求,文件将从不同的本地目录被服务:/data/www(或许包含html文件),/data/images(存放图片)。下面我们将编辑一个配置文件,搭建一个服务块,服务块里是一个包含两个location块的http块。

首先,创建一个/data/www的目录然后把一个包含任何内容的index.html放进去,然后创建一个/data/images目录并把一个图片放到里面

接着,我们打开配置文件。默认的配置文件已经包含一些server block示例,这些示例基本都被注释掉了。现在,把没有注释掉的也给注释了,同时,新增一个server block :

http {
    server {
    }
}

通常,配置文件可能包含好几个server blocks,这些server block通过server names和监听的端口区别开。一旦nginx开始选择哪个server去执行一个请求,nginx就会把在请求头中的URI和server block中定义的location命令中的参数进行比较。

添加下面的location block到server block中。

location / {
    root /data/www;
}

这个location block指定了"/"前缀和请求中的URI进行比较。对于匹配到的请求,URI会被添加到rot命令指定的路径上,这里是/data/www,然后组成请求的文件在本地文件系统中的路径。如果匹配到了多个location block,nginx会选择最长匹配前缀的。上面的location block提供了最短的前缀,仅仅长度为1,所以,只有当其他所有的location block的都没有匹配上时,才会选择上面的location block。




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

location /images/ {
    root /data;
}

这个location block会匹配以/images/开头的请求(location /也匹配 /iamges/,但是只是更短的前缀)。
server block最终的配置应该是这样的:

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

    location /images/ {
        root /data;
    }
}

这个配置是是工作在默认的80端口,只能在本地机器上用http://localhost进行访问。对于以/images/开头的URI的请求,服务器将会发送/data/iamges目录下的文件来回复。比如,http://localhost/images/example.png请求的回复就是nginx会发送/data/images/example.png文件。如果此文件不存在,nginx会回复一个404错误。不是以/images/开始的URI请求将会映射到/data/www目录下。比如,http://localhost/some/example.html,nginx就会发送/data/www/some/example.html文件。

让新的配置文件生效,如果nginx还没有开启过,直接启动nginx,否则发送reload信号给nginx的master进程,命令为:nginx -s reload


如果文件不能按照预期的工作,我们可以再access.log和error.log中查找原因。这些文件的路径是/usr/local/nginx/logs 或者 /var/log/nginx


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值