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
进程可以同时处理的最大连接数。