原文地址html
user www www;
worker_processes 2;
error_log /var/log/nginx-error.log info;
events {
use kqueue;
worker_connections 2048;
}
...
语法: accept_mutex on | off;
默认值: accept_mutex off;
上下文: events
若是开启了 accept_mutex
,则 worker 进程会轮流接受新的链接。不然,有新链接时,会通知到全部的 worker 进程,而且若是新链接的数量不多,某些工做进程可能会浪费系统资源。nginx
在支持 EPOLLEXCLUSIVE 的系统中,或者使用了 reuseport 时,不须要开启
accept_mutex
。
在 1.11.3 以前的版本,默认值是 on。web
语法: accept_mutex_delay time;
默认值: accept_mutex_delay 500ms;
上下文: events
开启 accept_mutex
后,指定当另外一个工做进程当前正在接受新链接时,工做进程尝试从新启动接受新链接的最长时间。正则表达式
If accept_mutex is enabled, specifies the maximum time during which a worker process will try to restart accepting new connections if another worker process is currently accepting new connections.sql
语法: daemon on | off;
默认值: daemon on;
上下文: main
肯定 nginx 是否应该成为守护进程。主要在开发过程当中使用。服务器
语法: debug_connection address | CIDR | unix:;
默认值: —
上下文: events
对指定的客户链接,开启调试日志。其余链接会使用由 error_log
指令设置的日志等级。调试链接经过 IPv4 或 IPv6 地址指定,也能够经过 hostname 指定。对于使用了 UNIX socket 套接字的链接,调试日志用 unix:
参数开启。多线程
events {
debug_connection 127.0.0.1;
debug_connection localhost;
debug_connection 192.0.2.0/24;
debug_connection ::1;
debug_connection 2001:0db8::/32;
debug_connection unix:;
...
}
Nginx 经过 --with-debug
构建时,这个指令才能工做,参考 A debugging log。并发
语法: debug_points abort | stop;
默认值: —
上下文: main
当探测到内部错误时(例如工做进程重启时 socket 套接字泄露),开启 debug_points 会致使核心文件建立(停止)或中止进程(中止),以便使用系统调试器进行进一步分析。app
语法: env variable[=value];
默认值: env TZ;
上下文: main
默认状况下,nginx 会删除从父进程继承的全部环境变量,除了 TZ 变量。该指令容许保留一些继承的变量,更改它们的值或建立新的环境变量。这些变量是:异步
除非明确配置,不然 TZ 变量老是继承并可用于 ngx_http_perl_module 模块。
示例:
env MALLOC_OPTIONS;
env PERL5LIB=/data/site/modules;
env OPENSSL_ALLOW_PROXY_CERTS=1;
NGINX 环境变量是 nginx 内部使用的,用户不该该直接设置。
语法: error_log file [level];
默认值: error_log logs/error.log error;
上下文: main, http, mail, stream, server, location
配置日志记录。能够在同一级别上指定多个日志(1.5.2 版本开始)。若是在 main 配置上下文中未明肯定义日志写入哪一个文件,则将使用默认文件。
第一个参数定义了一个将存储日志的文件。特殊值 stderr 选择标准错误文件。记录到 syslog 能够经过指定“syslog:”前缀进行配置。记录到循环 内存缓冲区 能够经过指定“memory:”前缀和缓冲区大小进行配置,一般用于调试(1.7.11)。
第二个参数肯定日志记录的级别,能够是如下其中一个:debug,info,notice,warn,error,crit,alert 或 emerg。上面的日志级别按照严重性增长的顺序列出。设置某个日志级别会致使记录指定的和更严重的日志级别的全部消息。例如,默认的级别 error 会致使 error,crit,alert 和 emerg 消息被记录。若是省略此参数,则使用 error。
Nginx 经过 --with-debug
构建时,debug logging 才能工做,参考 A debugging log。
error_log 指令要用在 stream 上下文,须要使用 1.7.11 以后的版本。要用在 mail 上下文,须要使用 1.9.0 以后的版本。
语法: events { ... }
默认值: —
上下文: main
提供配置文件上下文,其中指定影响链接处理的指令。
语法: include file | mask;
默认值: —
上下文: any
将另外一个文件或与指定掩码 mask 匹配的文件包含到配置中。包含的文件应该包含语法正确的指令和块。
示例:
include mime.types;
include vhosts/*.conf;
语法: load_module file;
默认值: —
上下文: main
加载动态模块。1.9.11 以后的版本才可用。
示例:
load_module modules/ngx_mail_module.so;
语法: lock_file file;
默认值: lock_file logs/nginx.lock;
上下文: main
nginx 经过使用锁机制来实现 accept_mutex 和序列化访问共享内存。在大多数系统上,锁使用原子操做来实现,此时该指令被忽略。在其余系统上使用“lock file”机制。该指令为锁文件的名称指定一个前缀。
语法: master_process on | off;
默认值: master_process on;
上下文: main
肯定工做进程是否已启动。该指令适用于 nginx 开发人员。
语法: multi_accept on | off;
默认值: multi_accept off;
上下文: events
若是禁用 multi_accept,则工做进程将一次接受一个新链接。不然,工做进程将一次接受全部新链接。
若是使用 kqueue 链接处理方法,该指令将被忽略,由于它会报告等待接受的新链接数。
语法: pcre_jit on | off;
默认值: pcre_jit off;
上下文: main
对配置解析时已知的正则表达式启用或禁用“即时编译(just-in-time compilation)”(PCRE JIT)。1.1.12 版本以后可用。
PCRE JIT 能够显着加快正则表达式的处理速度。
版本高于 8.20,而且使用 --enable-jit
配置参数构建的 PCRE 库中可以使用 JIT。当使用 nginx(--with-pcre=
)构建 PCRE 库时,经过 --with-pcre-jit
配置参数启用 JIT 支持。
语法: pid file;
默认值: pid logs/nginx.pid;
上下文: main
定义用于储存主进程 PID 的文件。
语法: ssl_engine device; 默认值: — 上下文: main
定义硬件 SSL 加速器的名称。
语法: thread_pool name threads=number [max_queue=number];
默认值: thread_pool default threads=32 max_queue=65536;
上下文: main
定义命名线程池(named thread pools),用于多线程读取和发送文件而 不会阻塞 工做进程。1.7.11 以后可用。
threads
参数定义池中的线程数。
在池中的全部线程都忙的状况下,新任务将在队列中等待。max_queue
参数限制容许在队列中等待的任务数量。默认状况下,最多能够有 65536 个任务在队列中等待。当队列溢出时,任务完成并出现错误。
语法: timer_resolution interval; 默认值: — 上下文: main
减小工做进程中的定时器分辨率,从而减小 gettimeofday()
系统调用的次数。默认状况下,每次收到内核事件时都会调用 gettimeofday()
。在下降分辨率的状况下,gettimeofday()
仅在每一个指定的时间间隔内调用一次。
示例:
timer_resolution 100ms;
内部实施的时间间隔取决于使用的方法:
EVFILT_TIMER
过滤器timer_create()
setitimer()
语法: use method;
默认值: —
上下文: events
指定要使用的链接处理方法。一般不须要明确指定,由于 nginx 将默认使用最有效的方法。
语法: user user [group];
默认值: user nobody nobody;
上下文: main
定义工做进程使用的用户和组凭据。若是省略组,则使用名称等于用户名的组。
语法: worker_aio_requests number;
默认值: worker_aio_requests 32;
上下文: events
与 epoll 链接处理方法一块儿使用 aio 时,为单个工做进程设置未完成的异步 I/O 操做的最大数量。1.1.4 开始使用。
语法: worker_connections number;
默认值: worker_connections 512;
上下文: events
设置工做进程能够打开的最大并发链接数。
记住,这个数字包括全部链接(例如与代理服务器的链接等),而不只仅是与客户的链接。另外,同时链接的实际数量不能超过当前的最大可打开文件的数量限制,能够经过 worker_rlimit_nofile 更改。
语法: worker_cpu_affinity cpumask ...;
worker_cpu_affinity auto [cpumask];
默认值: —
上下文: main
将工做进程绑定到一组 CPU。每一个 CPU 集由可用的 CPU 的位掩码表示。应该为每一个工做进程定义一个单独的集合。默认状况下,工做进程不绑定到任何特定的 CPU。
示例,将每一个工做进程绑定到独立 CPU 上:
worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000;
将第一个工做进程绑定到 CPU0/CPU2,第二个工做进程绑定到 CPU3。适用于超线程。:
worker_processes 2; worker_cpu_affinity 0101 1010;
特殊值 auto(1.9.10)自动将工做进程绑定到可用的 CPU:
worker_processes auto;
worker_cpu_affinity auto;
可选的 mask
参数可用于限制可用于自动绑定的 CPU:
worker_cpu_affinity auto 01010101;
这个指令仅在 Linux 和 FreeBSD 系统上可用。
语法: worker_priority number;
默认值: worker_priority 0;
上下文: main
定义工做进程的调度优先级,就像 nice
命令所作的那样:负数意味着更高的优先级。容许的范围一般在 -20 到 20 之间变化。
示例:
worker_priority -10;
语法: worker_processes number | auto;
默认值: worker_processes 1;
上下文: main
定义工做进程数量。
最佳值取决于许多因素,包括(但不限于)CPU 内核数量,存储数据的硬盘驱动器数量以及加载模式。当对此有疑惑时,最佳选择是将其设置为可用的 CPU 核心数(值“auto”将尝试自动检测它)。
从版本 1.3.8 和 1.2.5 开始支持 auto 参数。
语法: worker_rlimit_core size;
默认值: —
上下文: main
更改工做进程的核心文件最大大小限制(RLIMIT_CORE)。用于在不从新启动主进程的状况下增大限制。
语法: worker_rlimit_nofile number;
默认值: —
上下文: main
更改工做进程的最大打开文件数量限制(RLIMIT_NOFILE)。用于在不从新启动主进程的状况下增大限制。
语法: worker_shutdown_timeout time;
默认值: —
上下文: main
配置正常关闭工做进程的超时时间。到期时,nginx 将尝试关闭当前打开的全部链接以便关闭工做进程。
这个指令从 1.11.11 以后可用。
语法: working_directory directory; 默认值: — 上下文: main
定义工做进程的当前工做目录。主要用于编写核心文件,在这种状况下,工做进程应该具备指定目录的写入权限。