2.1 nginx.conf文件的结构

nginx.conf文件的基本结构为:

# 全局块
events                                                         # events块
{

}
http                                                           # http块
{
# http全局块
        server                                                 # server块
        {
# server全局块
            location  [PATTERN]                                # location块
            {

            }
            location  [PATTERN]                                # location块
            {

            }
        }
        server                                                 # server块
        {

        }
# http全局块
}

nginx.conf一共由三部分组成,分别为全局块、events块和http块

在http块中,又包含http全局块、多个server块

每个server块中,可以包含server全局块和多个location块

在同一配置块中嵌套的配置块,各个配置块之间不存在次序关系

配置文件支持大量可配置的指令,绝大多数指令不是特定属于某一个块的。

同一个指令放在不同层级的块中,其作用域也不同,一般情况下,高一级块中的指令可以作用于自身所在的块和此块包含的所有低层级块

如果某个指令在两个不同层级的块中同时出现,则采用“就近原则”,即以较低层级块中的配置为准。比如,某指令同时出现在http全局块中和server块中,并且配置不同,则应该以server块中的配置为准。

1. 全局块

全局块主要设置一些影响Nginx服务器整体运行的配置指令这些指令的作用域是Nginx服务器全局

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

2. events块

events块涉及的指令主要影响Nginx服务器与用户的网络连接

常用到的设置包括是否开启对多worker process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型处理连接请求,每个worker process可以同时支持的最大连接数等。

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

3. http块

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

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

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

4. server块

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

虚拟主机,又称虚拟服务器、主机空间或是网页空间,它是一种技术。该技术是为了节省互联网服务器硬件成本而出现的。这里的“主机”或“空间”是由实体的服务器延伸而来,硬件系统可以基于服务器群,或者单个服务器等。虚拟主机技术主要应用于HTTP、FTP及EMAIL等多项服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。从用户角度来看,一台虚拟主机和一台独立的硬件主机是完全一样的。

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

和http块相同,server块也可以包含自己的全局块,同时可以包含多个location块。在server全局块中,最常见的两个配置项是本虚拟主机的监听配置本虚拟主机的名称或IP配置

5. location块

每个server块中可以包含多个location块。

这些location块的主要作用是,基于Nginx服务器接收到的请求字符串(例如, server_name/uri-string),对除虚拟主机名称(也可以是IP别名)之外的字符串(前例中“/uri-string”部分)进行匹配,对特定的请求进行处理

地址定向、数据缓存和应答控制等功能都是在这部分实现。许多第三方模块的配置也是在location块中提供功能。

Last updated