曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 2933|回复: 0
打印 上一主题 下一主题

nginx.conf 文件结构及各个块的作用

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2015-8-6 10:54:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
nginx.conf 文件的基本结构如下所示:
...          # 全局块
events {            # events 块
    ...
}   

http {                            # http 块
             ...                     # http 全局块
             server {            # Server 块
                               ...   # Server 全局块              

                               location [PATTERN]                          # location 块
                               {
                                           ...
                               }
                               location [PATTERN]                          # location 块
                               {
                                           ...
                               }
                }

                server {                           # 又一个 Server 块
                                     ...
                 }

                 ...                                    # http 全局块
}


由上可见,nginx.conf 一共由 3 部分组成,分别为全局块、events 块 和 http 块。

http 块中又包含 http 全局块,多个 server 块。每个 server 块中,可以包含 server 全局块和多个 location 块。在同一配置块中嵌套的配置块,各个之间不存在次序关系。

配置文件支持大量的配置指令,绝大多数指令不特定属于某一个块。同一个指令放在不同层级的块中,其作用域也不同。一般情况下,高一级块中的指令可以作用于自身所在的块和此块包含的所有低层级块。如果某个指令在两个不同层级块中同时出现,则采用 “就近原则”,即以较低层级块中的配置为准,这类似与 C 语言中的局部变量的概念。比如,某指令同时出现在 http 全局块和 server 块中,并且配置不同,那么则以 server 快中的配置为准。

各个块的作用:

1. 全局块

全局块是默认配置文件从开始到 events 块之间的一部分内容,主要设置一些影响 Nginx 服务器整体运行的配置指令。因此,这些指令的作用域是 Ngnix 服务器全局。

通常包括配置运行 Nginx 服务器的用户(组),允许生成的 worker process 数,Nginx 进程 PID 存放路径,日志的存放路径和类型以及配置文件引入等。

2. events 块

events 块涉及的指令主要影响 Ngnix 服务器与用户的网络连接。常用到的设置包括是否开启对多 worker process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型处理连接请求,每个 worker process 可以同时支持的最大连接数等。

这一部分指令对 Nginx 服务器的性能影响较大,在实际配置中应该根据实际情况灵活调整。

3. http 块

http 块是 Nginx 服务器配置中的重要部分,代理,缓存,日志等绝大多数的功能和第三方模块的配置都可以放在该模块中。

http 块中可以包含自己的全局块,也可以包含 server 块,server 块中又可以进一步包含 location 块。

可以在 http 全局块中配置的指令包含文件引入、MIME-Type 定义、日志自定义、是否使用 sendfile 传输文件、连接超时时间、单链接请求数上限等。

4. server 块

server 块和 “虚拟主机” 的概念有密切联系。

每一个 http 块都可以包含多个 server 块,而每个 server 块相当于一台虚拟主机,它内部可以有多台主机联合提供服务,一起对外提供逻辑上关系密切的一组服务(或网站)。

在 server 全局块中,最常见的两个配置项是本虚拟主机的监听配置和本虚拟主机的名称或 IP 配置。

5. location 块

每个 server 块中可以包含多个 location 块。严格的说,location 块实际是 server 块的一个指令,只是由于它在整个 Nginx 配置文档中起着重要作用,而且 Nginx 服务器在许多功能上的灵活性往往也会在 location 指令的配置中体现,因此可以将其认为是单独一个块。

这些 location 块的主要作用是,基于 Nginx 服务器接收到的请求字符串(如 server_name/uri-string),对除虚拟主机名称(也可以是 IP 别)之外的字符串进行配置,对特定的请求进行处理。地址定向,数据缓存和应答控制等功能都是在这部分实现的。许多第三方模块的配置也是在 location 块中提供功能。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 23:39 , Processed in 0.068818 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表