核心功能
示例配置
user www www; worker_processes 2; error_log /var/log/nginx-error.log info; events { use kqueue; worker_connections 2048; } ...
Directives
语法: |
accept_mutex |
---|---|
默认值: |
accept_mutex off; |
上下文: |
events |
如果accept_mutex
已启用,
工作进程将轮流接受新连接。
否则,所有工作进程都将收到有关新连接的通知。
如果新连接的数量较低,则某些 worker 进程
可能只是浪费系统资源。
无需启用accept_mutex
在支持 EPOLLEXCLUSIVE 标志 (1.11.3) 的系统上,或
使用 ReusePort 时。
在 1.11.3 版本之前,默认值为on
.
语法: |
accept_mutex_delay |
---|---|
默认值: |
accept_mutex_delay 500ms; |
上下文: |
events |
如果启用accept_mutex,则指定最长时间 在此期间,工作进程将尝试重新启动接受新的 connections(如果另一个 worker 进程当前正在接受) 新连接。
语法: |
daemon |
---|---|
默认值: |
daemon on; |
上下文: |
main |
确定 nginx 是否应成为守护进程。 主要用于开发过程中。
语法: |
debug_connection
|
---|---|
默认值: | — |
上下文: |
events |
为选定的客户端连接启用调试日志。
其他连接将使用 error_log Directives设置的日志记录级别。
调试的连接由 IPv4 或 IPv6(1.3.0、1.2.1)指定
地址或网络。
也可以使用主机名指定连接。
对于使用 UNIX 域套接字(1.3.0、1.2.1)的连接,
调试日志由”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:; ... }
要使此Directives正常工作,nginx 需要
构建--with-debug
,
参见 “调试日志”。
语法: |
debug_points |
---|---|
默认值: | — |
上下文: |
main |
此Directives用于调试。
当检测到internal错误时,例如插座泄漏
重新启动工作进程, 启用debug_points
导致核心文件创建 (abort
)
或停止进程 (stop
) 进一步
使用系统调试器进行分析。
语法: |
env |
---|---|
默认值: |
env TZ; |
上下文: |
main |
默认情况下,nginx 会删除所有继承的环境变量 从其父进程(TZ 变量除外)。 该Directives允许保留一些继承的变量 更改它们的值,或创建新的环境变量。 这些变量是:
- 在可执行文件的实时升级期间继承;
- 由 ngx_http_perl_module 模块使用;
- 由 worker 进程使用。 应该记住,以这种方式控制系统库 并不总是可能的,因为库通常会检查 变量仅在初始化期间,远在可以设置它们之前 使用此Directives。 一个例外是上面提到的可执行文件的实时升级。
TZ 变量始终被继承并可用于 ngx_http_perl_module 模块,除非它被显式配置。
使用示例:
env MALLOC_OPTIONS; env PERL5LIB=/data/site/modules; env OPENSSL_ALLOW_PROXY_CERTS=1;
nginx 环境变量由 nginx internal使用 ,不应由用户直接设置。
语法: |
error_log |
---|---|
默认值: |
error_log logs/error.log error; |
上下文: |
main ,http ,mail ,stream ,server ,location |
配置日志记录。
可以在同一配置级别 (1.5.2) 上指定多个日志。
如果在main
配置级别:将日志写入文件
未明确定义,则将使用默认文件。
第一个参数定义了一个file
,它将存储日志。
特殊值stderr
选择标准错误文件。
可以通过指定 syslog 来配置日志记录到 syslog
“syslog:
“ 前缀。
可以通过指定 ”memory:
“ 前缀和
缓冲区size
,通常用于调试 (1.7.11)。
第二个参数确定level
伐木,
,可以是以下值之一:debug
,info
,notice
,warn
,error
,crit
,alert
或emerg
.
上述日志级别按严重性递增的顺序列出。
设置某个日志级别将导致所有
要记录的指定和更严重的日志级别。
例如,默认级别error
将
原因error
,crit
,alert
和emerg
消息
进行记录。
如果省略此参数,则error
被使用。
为debug
logging 才能正常工作,nginx 需要 构建--with-debug
, 参见 “调试日志”。
可以在stream
水平 从版本 1.7.11 开始, 和
语法: |
events { ... } |
---|---|
默认值: | — |
上下文: |
main |
提供配置文件上下文,其中 影响连接处理。
语法: |
include |
---|---|
默认值: | — |
上下文: |
any |
包括另一个file
或与
指定mask
,导入到配置中。
包含的文件应包括
语法正确的Directives和块。
使用示例:
include mime.types; include vhosts/*.conf;
语法: |
load_module |
---|---|
默认值: | — |
上下文: |
main |
该Directives出现在版本 1.9.11 中。
加载动态模块。
例:
load_module modules/ngx_mail_module.so;
语法: |
lock_file |
---|---|
默认值: |
lock_file logs/nginx.lock; |
上下文: |
main |
nginx 使用锁定机制来实现对共享内存的 accept_mutex 和序列化访问。 在大多数系统上,锁是使用原子作实现的。 ,并且此Directives将被忽略。 在其他系统上,使用 “lock file” 机制。 该Directives指定锁定文件名称的前缀。
语法: |
master_process |
---|---|
默认值: |
master_process on; |
上下文: |
main |
确定是否启动工作进程。 此Directives适用于 nginx 开发人员。
语法: |
multi_accept |
---|---|
默认值: |
multi_accept off; |
上下文: |
events |
如果multi_accept
被禁用,则 worker 进程
将一次接受一个新连接。
否则,工作进程
将一次接受所有新连接。
如果使用 kqueue 连接处理方法,则忽略该Directives,因为它报告 等待接受的新连接数。
语法: |
pcre_jit |
---|---|
默认值: |
pcre_jit off; |
上下文: |
main |
该Directives出现在版本 1.1.12 中。
启用或禁用“实时编译”(PCRE JIT) 了解配置解析时已知的正则表达式。
PCRE JIT 可以显著加快正则表达式的处理速度。
JIT 在 PCRE 库(从版本 8.20 开始)中可用 使用--enable-jit
configuration 参数。 当 PCRE 库是使用 nginx (--with-pcre=
), JIT 支持是通过--with-pcre-jit
configuration 参数。
语法: |
pid |
---|---|
默认值: |
pid logs/nginx.pid; |
上下文: |
main |
定义一个file
,它将存储主进程的进程 ID。
语法: |
ssl_engine |
---|---|
默认值: | — |
上下文: |
main |
定义硬件 SSL 加速器的名称。
在配置测试期间,OpenSSL 可能会动态加载该模块。
语法: |
thread_pool
|
---|---|
默认值: |
thread_pool default threads=32 max_queue=65536; |
上下文: |
main |
该Directives出现在版本 1.7.11 中。
定义name
和线程池的参数
用于多线程读取和发送文件,而不会阻塞工作进程。
这threads
参数
定义池中的线程数。
如果池中的所有线程都繁忙,
新任务将在队列中等待。
这max_queue
参数限制数量
允许在队列中等待的任务。
默认情况下,队列中最多可以等待 65536 个任务。
当队列溢出时,任务完成并显示错误。
语法: |
timer_resolution |
---|---|
默认值: | — |
上下文: |
main |
降低工作进程中的计时器解析,从而减少
数量gettimeofday()
系统调用。
默认情况下,gettimeofday()
每次调用
收到内核事件。
分辨率降低时,gettimeofday()
仅
每个指定的interval
.
例:
timer_resolution 100ms;
间隔的internal实现取决于所使用的方法:
- 这
EVFILT_TIMER
filter ifkqueue
被使用; -
timer_create()
如果eventport
被使用; -
setitimer()
否则。
语法: |
use |
---|---|
默认值: | — |
上下文: |
events |
指定连接处理
method
使用。
通常不需要显式指定它,因为 nginx 会
默认情况下,使用最有效的方法。
语法: |
user |
---|---|
默认值: |
user nobody nobody; |
上下文: |
main |
定义user
和group
工作进程使用的凭证。
如果group
,则名称等于
的user
被使用。
语法: |
worker_aio_requests |
---|---|
默认值: |
worker_aio_requests 32; |
上下文: |
events |
该Directives出现在版本 1.1.4 和 1.0.7 中。
当使用 aio 配合 epoll 连接处理方式时,设置最大值number
之
出色的异步 I/O作
对于单个工作进程。
语法: |
worker_connections |
---|---|
默认值: |
worker_connections 512; |
上下文: |
events |
设置最大同时连接数 可以由工作进程打开。
应该记住,这个数字包括所有连接 (例如,与代理服务器的连接等), 不仅仅是与客户的联系。 另一个考虑因素是实际的 simultaneous 数量 连接数不能超过 打开文件的最大数量,可通过 worker_rlimit_nofile 进行更改。
语法: |
worker_cpu_affinity worker_cpu_affinity |
---|---|
默认值: | — |
上下文: |
main |
将工作进程绑定到 CPU 集。 每个 CPU 集都由允许的 CPU 的位掩码表示。 应该为每个 worker 进程定义一个单独的集合。 默认情况下,工作进程不绑定到任何特定的 CPU。
例如
worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000;
将每个 worker 进程绑定到单独的 CPU,而
worker_processes 2; worker_cpu_affinity 0101 1010;
将第一个工作进程绑定到 CPU0/CPU2, 第二个工作进程到 CPU1/CPU3。 第二个示例适用于超线程。
特殊值auto
(1.9.10) 允许
将 worker 进程自动绑定到可用的 CPU:
worker_processes auto; worker_cpu_affinity auto;
可选的 mask 参数可用于限制 CPU 可用于自动绑定:
worker_cpu_affinity auto 01010101;
该Directives仅在 FreeBSD 和 Linux 上可用。
语法: |
worker_priority |
---|---|
默认值: |
worker_priority 0; |
上下文: |
main |
定义工作进程的调度优先级,如下所示
done bynice
命令:负数number
表示优先级更高。
允许的范围通常从 -20 到 20 不等。
例:
worker_priority -10;
语法: |
worker_processes |
---|---|
默认值: |
worker_processes 1; |
上下文: |
main |
定义工作进程的数量。
最佳值取决于许多因素,包括 (但不是
限于)CPU 内核数、硬盘数
存储数据的驱动器和负载模式。
如有疑问,请将其设置为可用 CPU 内核的数量
将是一个好的开始(值”auto
”
将尝试自动检测它)。
这auto
参数从
版本 1.3.8 和 1.2.5。
语法: |
worker_rlimit_core |
---|---|
默认值: | — |
上下文: |
main |
更改核心文件的最大大小限制
(RLIMIT_CORE
) 用于工作进程。
用于在不重新启动主进程的情况下提高限制。
语法: |
worker_rlimit_nofile |
---|---|
默认值: | — |
上下文: |
main |
更改打开文件的最大数量限制
(RLIMIT_NOFILE
) 用于工作进程。
用于在不重新启动主进程的情况下提高限制。
语法: |
worker_shutdown_timeout |
---|---|
默认值: | — |
上下文: |
main |
该Directives出现在版本 1.11.11 中。
配置超时以正常关闭工作进程。
当time
到期
nginx 将尝试关闭当前打开的所有连接
以方便关闭。
语法: |
working_directory |
---|---|
默认值: | — |
上下文: |
main |
定义工作进程的当前工作目录。 它主要用于编写核心文件时,在这种情况下 工作进程应具有 指定的目录。