1.块配置项
块配置项由一个块配置项名和一对大括号组成。例如:
events{
...
}
http{
upstream backend{
server 127.0.0.1:8080;
}
gzip on;
}
上面的代码中,events,http,upstream等都是块配置项。块配置项一定会用大括号把一系列的所属配置项全包含进来,表示大括号内的配置项同时生效。
2.配置项的语法格式
nginx中最基本的配置项语法格式为: 配置项名 配置项值1 配置项值2 ...... ;
如果配置项中出现空格等语法符号,则需要用单引号或双引号括住配置项值,否则nginx会报语法错误。
#表示注释
3.在配置中使用变量
有些模块允许使用变量,在变量使用的时候前面要加上$符号。
在执行configure的时候我们已经把许多模块编译进nginx中,但是否启用这些模块一般取决于配置文件中相应的配置项,大部分模块都必须在nginx.conf中读取某个配置项后才会在运行时启用,例如,只有当配置http{...}这个配置项时,ngx_http_module模块才会在nginx中启用,其它依赖ngx_http_module的模块也才能正常使用。
4.nginx服务的基本配置
nginx在运行时至少要加载几个核心模块和一个事件模块。这些模块运行时所支持的配置项称为基本配置项——所有其它模块执行时都依赖的配置项。
nginx基本配置项可以分为四类:用于调试、定位问题的配置项;正常运行必备的配置项;优化性能的配置项;事件配置项。
用于调试和定位问题的配置项
1.是否已守护进程方式运行nginx
daemon on|off
2.是否以master/worker方式工作
master_process on|off
3.error日志设置
error_log /path/file level
error日志时定位nginx问题的最佳工具,我们可以根据自己的需求妥善设置error日志的路径和级别。
/path/file参数可以是一个文件,也可以时/dev/null(这样是关闭error日志),还可以是stderr(输出到标准错误文件)。
level表示日志的输出等级,当设定一个级别之后,大于等于该级别的日志都会被输出到/path/file文件中。
正常运行的配置项
1.定义环境变量
env VAR|VAR=VALUE
2.嵌入其它配置文件
include /path/file
3.指定nginx worker进程可以打开的最大文件句柄数
worker_rlimit_nofile limit;
优化性能的配置项
1.nginx worker进程个数
worker_processes number;
2.绑定nginx worker进程到指定的cpu内核
worker_cpu_affinity cpumask[coumask...]
事件类配置项
1.是否打开accept锁
accept_mutex[on|off]
accept_mutex时nginx里的负载均衡锁,这把锁可以让多个worker进程轮流的、序列化的与新客户端建立tcp连接。
2.使用accept锁后到真正建立连接之间的延迟时间
accetp_mutex_delay Nms;
如果有一个worker进程试图取accept锁而没有取到,它至少要等待Nms的时间间隔之后才能再次取锁。
3.每个worker的最大连接数
worker_connections number;
定义每个worker进程可以同时处理的最大连接数。