1.5.2 配置上下文
1.5.1小节中我们在介绍块指令时提到了上下文的概念。
nginx.conf文件中的配置信息,根据其逻辑上的意义,进行了分类,分成了多个作用域,不同的作用域分别用大括号来限定,这些大括号限定的区域被称为“上下文(conexts)”,其中容纳着相关配置细节。
不同的作用域含有一个或者多个配置项,这些区域负责提供组织化结构与状态化,用于决定是否应用其中包含的配置。
nginx主要的几个指令上下文如下表所示:
指令上下文 | 说明 |
---|---|
main | 配置影响nginx全局的指令,nginx运行时与具体业务功能(如http服务或email服务代理)无关的一些参数。如:工作进程数,运行的身份等。 |
http | 与提供http服务相关的一些配置参数。如:是否使用keepalive,是否使用gzip进行压缩等。可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。 |
server | http服务上支持若干虚拟主机。每个虚拟主机一个对应的server配置项,配置项里面包含该虚拟主机相关的配置。在提供mail服务的代理时,也可以建立若干server,每个server通过监听的地址来区分。 |
location | http服务中,某些特定的URL对应的一系列配置项。 |
实现email相关的SMTP/IMAP/POP3代理时共享的一些配置项(因为可能实现多个代理,工作在多个监听地址上)。 |
|
events | 配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。 |
upstream | 配置HTTP负载均衡器分配流量到几个应用程序服务器。 |
上下文可能有出现包含的情况,通常http和mail一定是出现在main里的,server在http中,location在server中。
在一个上下文里,可能包含另外一种类型的上下文多次。例如:如果http服务,支持了多个虚拟主机,那么在http里,就会出现多个server。
指令只能作用于其设计所面向的对应上下文区域内。Nginx会将超出指定上下文的指令视为错误。官网有详细介绍每个指令适用的上下文:http://nginx.org/en/docs/dirindex.html。