基本模块提供的指令允许你定义nginx基本功能的变量,在编译时它们不能被禁用,因此它们提供的指令和区段总是有效,有下面三个基本模块:
核心模块(core module)–基本特征和指令,例如进程管理和安全事件模块(events module)–在nginx内部机制配置网络使用能力配置模块(configuration module)–提供包含机制nginx应用程序只是一个二进制文件(轻量级的后台进程),查看进程:
# ps fuax|grep nginxnginx的master进程的用户和用户组通常为root/root,master进程通常不处理任何客户端请求,master进程的主要工作是产生worker进程,worker进程以配置文件指定的用户和用户组运行,可以定义多个worker进程和每个worker进程的最大连接数。
核心模块的大多数指令需要放在配置文件的根部,而且只能使用一次,有些指令只能在特定的环境当中使用。
指令和使用环境语法和描述daemon值:on/off 语法:<daemon on;> 默认值:onenv语法:env MY_VARIABLE;env MY_VARIABLE=my_value;允许重定义环境变量error_log(使用环境:main(根部)、http、server、location)语法:路径:error_log /path; 默认值:logs/error.log error level级别:debug、info、notice、warn、error、crit(详细程度由高到底:debug提供全部日子记录,crit仅报告关键错误)能够提供不同的错误日志级别:应用程序、HTTP服务、虚拟主机、虚拟主机目录通过重定向,日志记录可以重定向到/dev/null,在配置文件根部禁用错误日志记录:error_log /dev/null crit;lock_file语法:文件路径:lock_file /path默认值:在编译时定义使用lock文件是为了互拆现象,默认不使用,除非在编译时已启用log_not_found(使用环境:main、http、server、location)值:on(默认)/off开启或禁用记录404错误,如果日志中填满了无法访问favicon.ico或robots.txt文件而产生的404错误,可以考虑将其关闭master_process值:on(默认)/off默认开启了master进程和woker进程,若禁用则只开启master进程,客户端无法连接服务器,该指令仅用于测试pid语法:文件路径:pid logs/nginx.pid默认值:在编译时定义用于配置nginx守护进程的pid文件路径ssl_engine语法:字符串:ssl_engine enginename;默认值:无enginename是一个系统的有效硬件SSL加速器,要检测有效的SSL加速器装置,可以在shell下使用命令:openssl engine -tthread_stack_size语法:thread_stack_size 1m;默认值:none定义线程堆栈大小,参考下面的worker_threads指令timer_resolution语法:timer_resolution:100ms;默认值:无控制系统调用gettimeofday()时间间隔,它会调用该函数与系统内部时钟同步。如果这个值没有指定,在每一次内核事件通知后时钟都会被刷新user语法:user username ;user username groupname;默认值:在编译时定义,若未定义,则使用nginx的master进程的用户和用户组 该指令将允许你定义用户和组别,nginx的worker进程将使用这些设置运行worker_threads语法:worker_threads 8;默认值:无为每一个worker进程定义一定数量的线程警告:线程在默认情况下禁用worker_cpu_affinity语法:worker_cpu_affinity 1000 0100 0010 0001;worker_cpu_affinity 10 10 01 01;worker_cpu_affinity ;默认值:无该指令与woker_processes协同工作,它可以让你的worker进程影响cpu内核,数字序列与worker进程一样多。如果你配置nginx使用3个worker进程,那么就会有3个数字序列(可以理解为3个块),对于双核cpu,那么每一个块将会有两位数字,worker_cpu_affinity 01 01 10 1、第一块(01)指第一个worker进程会受第二个内核影响2、第二块(01)指第二个worker进程会受第二个内核影响3、第三块(10)指第三个worker进程会受第一个内核影响注意:worker_cpu_affinity只建议针对多核处理器而非超线程处理器语法:worker_cpu_affinity cpummask [cpumask]默认值:无说明:该选项仅适用于Linux,该选项允许你将worker进程绑定到一个CPU上,通过调用sched_setaffinity() 例如:worker_processes 4;worker_cpu_affinity 0001 0010 0100 1000;以上指令实现了将每一个进程绑定到一个cpuworker_processes 2;worker_cpu_affinity 0101 1010;以上指令实现了将第一个worker进程绑定到cpu0/cpu2第二个worker进程绑定到cpu1/cpu3这适用于超线程(HTT)cpuworker_priority语法:worker_priority 0 默认值:0定义worker进程优先级,从-20(最高级)到19(最低级),注意:内核进程运行在-5优先级,因此不推荐值设置为小于-5worker_processes语法:worker_processes 4;默认值:1定义工作进程数量,nginx可以将请求的处理分到多个工作进程,如果属于cpu多核建议增加该值,如果一个进程由于慢的I/o操作被阻塞,那么进入的工作进程将转交给其他工作进程注:根据负载自动调整worker进程设置:worker_processes auto;worker_rlimit_core语法:worker_rlimit_core 100m;默认值:无;定义每个woker进程的内核文件大小worker_rlimit_nofile语法:worker_rlimit_nofile 10000;默认值:无定义一个worker进程可以同时处理的文件数量worker_rlimit_sigpending语法:worker_rlimit_sigpending 10000定义每个用户(调用进程的用户ID)能够被排入队列的信号(signal)数量,如果队列满,会由于这个限制导致信号被忽略working_directory语法:目录路径:working_directory /usr/local/nginx/默认值:在配置编译时通过prefix开关选项指定这是worker进程的工作目录,仅用于定义内核文件位置。对于该目录,worker进程用户必须有写的权限Events模块提供的指令可以用来配置网络机制。
指令描述accept_mutex值:on(默认)/off控制是否接受使用互斥锁来打开套接字监听accept_mutex_delay语法:accept_mutex_delay 500ms;(默认)定义一个worker进程在再次获取资源之前应等待的时间。如果指令accept_mutex设置为off,则不使用该值debug_connection语法:ip地址或CIDR段对于匹配的ip地址或ip区段,需记忆详细的日志信息,这些信息存放在error_log指令指定的文件中注意:为了使用该功能,在配置编译nginx时使用开关变量debugmulti_accept语法:on/off(默认)定义nginx是否立刻接受从所有监听队列进入的连接use值:/dev/poll、epoll、eventport、kqueue、rtsig或select use kqueue默认值:编译时定义在有效的模型中选择event的模型类型(在编译时开启),但是nginx会自动选择最合适的一个。1、select:默认的标准模块,如果OS不支持更有效的模型,则使用它(这种模型也是在windows下仅有的模型)2、poll:在自动选择上优先与select,但在所有系统上都无效3、kqueue:一种在FreeBSD1 4.1+、OpenBSD02.9+、NetBSD2.0、MacOS X下性能高效的模型4、epoll:一种基于linux2.6+操作系统下有效的模型5、rtsig:实时信号,对于linux2.2.19有效,但不适用于高流量情况,作为默认,系统设置仅允许1024个队列信号/dev/poll一种用于Solaris 77 11/99+,HP/UX 11.22+,IRIX 6.5.15+和TRU64 UNIX5.1A+系统的高效模型Eventport用于Solaris 10的一种高效模型,但需要安全补丁worker_connections语法:worker_connections定义一个worker进程能够同时连接的数量nginx的configuration模块是一个简单的模块,它提供的include指令能将其他文件包含在nginx的配置文件中,在配置文件的任何地方都可以使用该指令,并且后面只有一个参数–文件路径。 注意:文件路径若使用相对路径是相对于配置文件所在目录而言的。