NGINX与其他的服务类似,都是使用固定格式的文字式的配置文件。默认情况下nginx.conf保存在/etc/nginx目录下。通常来说是/usr/local/nginx/conf,/etc/nginx,/usr/local/etc/nginx。
指令
配置文件由指令和参数组成。简单的(单行)指令以分号结尾。其他的指令就像是一个"容器",它会将一些相关得指令聚集在一起,并且由{}封闭起来;这些通常被称为块。这里有一些简单的指令的例子:
user nobody;
error_log logs/error.log notice;
worker_processs 1;
具体功能的配置文件
为了使得配置文件更好维护,我们建议你将配置文件拆分成一个文件集合到/etc/nginx/conf.d目录,并且使用include在nginx.conf文件中去引入这些文件。
include conf.d/http;
include conf.d/stream;
include conf.d/exchange-enhanced;
上下文
一些最高级的指令,被称作context,按照不同的规则将指令分类。
- events - 一般连接处理
- http - HTTP规则
- mail - Mail规则
- stream -TCP和UDP规则
在这些context之外的叫做main context。
虚拟服务器
在每一种协议规则上下文中,你包括了1个或者多个server块去定义虚拟服务器,这些虚拟服务器控制着请求的处理。根据不同的traffic类型,在server上下文中的指令类型也有所不同。
对于HTTP tracffic来说,也就是http上下文,每一个server指令控制着特殊的domain或者IP地址下的资源请求的处理。在一个server
中可以定义一个或者多个location
上下文,每个location都与一个特定的URI相匹配。
对于mail或者TCP/UDP协议来说(mail
和stream
上下文),server指令控制着特定的TCP端口或者UNIX socket的处理。
多个上下文的配置示例文件
user nobody; # 一个main上下文的指令
events {
# 连接的配置信息
}
http {
# HTTP配置,对所有虚拟服务器都有影响
server {
# HTTP虚拟服务器1的配置
location /one {
# 处理以'/one'开头的URL
}
location /two {
# 处理以'/two'开头的URL
}
}
server {
# HTTP虚拟服务器2的配置
}
}
stream {
# TCP/UDP配置,对所有虚拟服务器都有影响
server {
# TCP虚拟服务器1的配置
}
}
继承
总的来说,一个child 上下文--被包含在另一个上下文(父上下文中)-- 继承了父级的指令。一些指令可以在多个上下文中出现,在子上下文中可以重写继承自父上下文的配置。举个例子来说,proxy_set_header
就是这样。
重新加载配置
当配置文件修改后,必须重新加载,文件才能生效。你可以使用nginx进程发送reload命令在不中断当前请求进程的情况下去升级配置。可以查看Controlling NGINX Processing at Runtime。
网友评论