配置示例
user www www;
worker_processes 2;
error_log /var/log/nginx-error.log info;
events {
use kqueue;
worker_connections 2048;
}
accept_mutex
用法 accept_mutext on | off;
默认值 off,在1.11.3版本前是on.
在events块中使用。
如果开启了这个指令,那么worker进程就会按顺序接受新的连接。否则所有的worker进程只是被通知有新的连接进入,而且如果新的连接数很少,那么有些worker进程可能会浪费一些系统资源。
accept_mutex_delay
用法 accept_mutex_delay time;
默认值 500ms
在events块中使用。
如果开启了这个指令,那么需要指定一个worker进程尝试重新接受新连接的时间(当另一个进程正在接受新连接的话)。
daemon
用法:daemon on| off;
默认值 on
在main块中使用。
此指令用于决定nginx是否以daemon方式运行,主要在开发环境中使用。
error_log
用法:error_log file [level];
默认值 error_log logs/error.log error;
在main,http,mail(1.7.11+),stream(1.9.0+),server,location块中使用。
如果在main块中没有显示指定log,则会使用默认的log。
第一个参数file用于指定存放log的位置。
第二个参数level用于指定log的级别,可能的值有debug,info,notice,warn,error,crit,alert,emerg.
注意:如果想开启debug日志,则在构建nginx的时候需要加上—with-debug参数。
env
用法 env 变量[=变量值];
默认值 env TZ;
在main块中使用。
默认情况下,除了TZ变量外,nginx会移除所有从父进程继承而来的环境变量。
这个指令允许保留一些继承而来的变量或改变变量的值或创建新的变量。
这些变量可在live upgrade一个可执行文件的时候被继承或者被ngx_http_perl_module和worker进程使用。
使用示例:
env MALLOC_OPTIONS;
env PERL5LIB=/data/site/modules;
env OPENSSL_ALLOW_PROXY_CERTS=1;
注意:nginx的环境变量应该由nginx内部使用而不应该直接由用户指定。
events
用法 events {…}
无默认值,在main块中使用。
用于提供配置文件的上下文环境来指定可以影响连接处理的指令。
include
用法 include 文件|掩码;
无默认值
可在任何块中使用。
用于包含进另一个文件或者将与掩码相匹配的文件指定到配置中,被包含进来的文件内容需要保证在语法上是正确可用的。
使用示例:
include mime.types;
include vhosts/*.conf;
load_module
用法 load_module 文件
无默认值,在main块中使用。
此指令从1.9.11版本开始才有。
用于加载一个动态的模块。
示例:
load_module modules/ngx_mail_module.so;
lock_file
用法 lock_file 文件
默认值 lock_file logs/nginx.lock
在main块中使用。
nginx使用锁机制来实现accept_mutex然后将访问序列化到共享内存。在多数系统中锁是用原子操作实现的,这种情况下这个指令是被忽略的。在另一些系统中使用锁文件机制,这个指令用于指定锁文件名的前缀。
multi_accept
用法 multi_accept on | off
默认值 off
在events块中使用。
如果multi_accept被禁用,那么worker进程一次只能接受一个新的连接。否则worker进程则一次会接受所有的新连接。
注意:如果使用的是kqueue的连接处理方法,那么开启这个指令是无效的。
pid
用法 pid 文件
默认值 pid nginx.pid;
在main块中使用。
用于定义存储主进程id号的文件。
ssl_engine
用法 ssl_engine 设备;
无默认值,在main块中使用。
用于指定硬件ssl加速器的名。
thread_pool
用法 thread_pool 名字 threads=数量 [max_queue=数量];
默认 thread_pool default threads=32 max_queue=65536;
在main块中使用。
此指令从1.7.11版本开始支持。
用于定义以多线程读和以非阻塞worker进程方式发送文件的线程池名。
threads参数用于指定线程池中线程的数量。
如果池中的线程都很忙,那么新的任务将被放到queue中等待处理。max_queue参数是指定可放在queue中等待处理的最大任务数,默认是65536,如果queue溢出了,那么任务将以错误的方式被完成。
use
用法 use 方法;
无默认值,在events块中使用。
用于指定连接处理的方法。正常情况下不需要显示指定,因为nginx默认会使用最有效的方法。
user
用法 user 用户 用户所在的组;
默认值 user nobody nobody;
在main块中使用。
定义worker进程所要使用的用户和组,如果没有设置组,那么一个与用户相同的组名将会被使用。
worker_connections
用法 worker_connections number;
默认值 512。
在events块中使用。
用于设定一个worker进程同时可以打开的最大连接数。
要记住的是这个连接数是包括了所有的连接(比如与代理服务器或其它的连接),而不仅仅是与客户端的连接。另外要考虑的是同时可以打开的连接数不可以超过最大可打开文件数的限制,最大可打开文件数的限制可通过worker_rlimit_nofile指令来修改。
worker_cpu_affinity
用法 worker_cpu_affinity cpumask…;
worker_cpu_affinity auto [cpumask];
无默认值,在main块中使用。
将worker进程绑定到指定的cpu核上,每个cpu核都可以用位掩码来表示。每个worker进程都可以独立设置。默认的情况下,worker进程是没有绑定到任何cpu核上的。
例如:
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
绑定每个worker进程到单独的cpu
worker_processes 2;
worker_cpu_affinity 0101 1010;
这里第一个worker进程被绑定到了cpu0/cpu2,而第二个进程绑定到了cpu1/cpu3。这个例子适合超线程情况。
从1.9.0版本开始支持auto参数,即允许worker进程自动绑定到可用的cpu上。
worker_processes auto;
worker_cpu_affinity auto;
可选的cpumask选项用于限制可供worker进程自动绑定的可用的cpu数。
worker_cpu_affinity auto 01010101;
这个指令只在FreeBSD和Linux上才适用。
worker_priority
用法 worker_priority number;
默认值 0
在main块中使用。
指定worker进程被调度的优先级,就像在nice命令中所做的那样。负数意味着更高的优先级,优先级范围从-20到20。
例如:
worker_priority -10;
worker_processes
用法 worker_processes number|auto;
默认值 1
在main块中使用。
用于指定worker进程的数量。
可选的值取决于许多因素,包括但不仅限于cpu的核数,用于存储数据的磁盘驱动器数以及加载模式。当不清楚如何设定时,那么将此值设定成与cpu核数一样通常是一个好实践。
注意:auto 参数从1.3.8和1.2.5版本才开始有。
worker_rlimit_core
用法 worker_rlimit core size;
无默认值,在main块中使用。
用于更改worker进程的core-file(RLIMIT_CORE)的最大数量大小。主要用于无需重启主进程的情况下提高限制的大小。
worker_rlimit_nofile
用法 worker_rlimit_nofile number;
无默认值,在main中使用。
用于更改worker进程可打开的最大文件数(RLIMIT_NOFILE)的限制。主要用于无需重启主进程的情况下提高限制的大小。
worker_shutdown_timeout
用法 worker_shutdown_timeout time;
无默认值,在main块中使用。
这个指令从1.11.11版本开始才有。
配置worker进程优雅关闭前需要等待的超时时间。当超时时间已到,则nginx将尝试关闭所有当前已打开的连接用于关闭进程。
working_directory
用法 working_directory directory;
无默认值,在main块中使用。
定义一个worker进程的当前工作目录。主要用于当写一个core-file时,worker进程有写指定目录的权限。