........ #全局块
events{ #event块
...
}
http{ #http块
... #http全局块
server{ #server块
.. #server全局块
location[pattern]{ #location块
...
}
location[pattern]{#location块
...
}
}
server{
...
}
}
niginx.conf一共由三部分组成,分别为全局块,events块和http块。
在http块中,又包含http全局块,多个server块,多个server块不存在次序关系。
在server块中,又包含server全局块和多个location块,多个location块不存在次序关系。
配置文件支持大量可配置的指令,绝大多数指令不是特定属于某一个块的。
同一个指令放在不同层级的块中,其作用域也不同,一般情况下,高一级块中的指令可以作用于自身所在的块和此块包含的所有低层级块。
如果某个指令在不同层级的块中同时出现,采用就近原则,以较低层级块中的配置为准!
各个块的作用:
1.全局块
全局块是默认配置文件从开始到events块之间的 一部分内容,主要设置一些影响Nignx服务器整体运行的配置指令,因此,这些指令的作用域是Nginx服务器全局!
通常包括配置运行nginx服务器的用户组、允许生成的worker process数、Nginx进程PID存放路径、日志的存放路径和类型以及配置文件引入!
2.events块
events块涉及的指令主要影响Nginx服务器与用户的网络连接。
常用到的设置包括:是否开启对多worker process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型处理连接请求,每个worker process可以同时支持的最大连接数等。
这一部分的指令对Nginx服务器的性能影响大,在实际配置中,应该根据实际情况灵活调整。
3.http块
http块是nginx服务器配置中的重要部分,代理、缓存和日志定义等绝大多的功能和第三方模块的配置都可以放在这个模块中。
http块中包含http全局块和server块
可以在http全局块中配置的指令包括文件引入、MIME-TYPE定义、日志自定义、是否使用sendfile传输文件、连接超时时间、单连接请求数上限等。
4.server块
server块和“虚拟主机”的概念有密切联系。
虚拟主机,又称虚拟服务器、主机空间或是网页空间,它是一种技术。
该技术是为了节省互联网服务器硬件成本而出现的。
这里的“主机”或“空间”是由实体的服务器延伸而来,硬件系统可以基于服务器群,或者单个服务器等。
虚拟主机技术主要应用于HTTP、FTP及EMAIL等多项服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。从用户角度来看,一台虚拟主机和一台独立的硬件主机是完全一样的。
每个http块都可以包含多个server块,而每个server块就相当于一台虚拟主机。
server块中全局块指令的作用域为本server块,不会影响到其他的server块。
在server全局块中,最常见的两个配置是本虚拟主机的监听配置和本虚拟主机的名称或ip配置。
5.location块
每个server块中出了server全局块外,还包含多个location块。
严格意义上来说,location其实是server块的一个指令,但很重要,nginx功能上的灵活性在location块中体现。
这些location块的主要作用是,基于Nginx服务器接收到的请求字符串,对除虚拟主机之外的字符串进行匹配,对特定的请求进行处理。地址定向、数据缓存、和应答控制等功能都是在这部分实现。许多第三方模块的配置也是在location块中提供功能。