原文地址
示例配置指令 accept_mutexaccept_mutex_delaydaemondebug_connectiondebug_pointsenverror_logeventsincludeload_modulelock_filemaster_processmulti_acceptpcre_jitpidssl_enginethread_pooltimer_resolutionuseuserworker_aio_requestsworker_connectionsworker_cpu_affinityworker_priorityworker_processesworker_rlimit_coreworker_rlimit_nofileworker_shutdown_timeoutworking_directory如果开启了 accept_mutex,则 worker 进程会轮流接受新的连接。否则,有新连接时,会通知到所有的 worker 进程,并且如果新连接的数量很少,某些工作进程可能会浪费系统资源。
在支持 EPOLLEXCLUSIVE 的系统中,或者使用了 reuseport 时,不需要开启 accept_mutex。 在 1.11.3 之前的版本,默认值是 on。
开启 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.
确定 nginx 是否应该成为守护进程。主要在开发过程中使用。
对指定的客户连接,开启调试日志。其他连接会使用由 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。
当探测到内部错误时(例如工作进程重启时 socket 套接字泄露),开启 debug_points 会导致核心文件创建(中止)或停止进程(停止),以便使用系统调试器进行进一步分析。
默认情况下,nginx 会删除从父进程继承的所有环境变量,除了 TZ 变量。该指令允许保留一些继承的变量,更改它们的值或创建新的环境变量。这些变量是:
在可执行文件的 实时升级 过程中继承由 ngx_http_perl_module 模块使用由工作进程使用。记住,以这种方式控制系统库并不总是可行的,因为库通常只在初始化期间检查变量,而此时该指令还没有设置变量。例外是上面提到的可执行文件的实时升级。除非明确配置,否则 TZ 变量总是继承并可用于 ngx_http_perl_module 模块。
示例:
env MALLOC_OPTIONS; env PERL5LIB=/data/site/modules; env OPENSSL_ALLOW_PROXY_CERTS=1;NGINX 环境变量是 nginx 内部使用的,用户不应该直接设置。
配置日志记录。可以在同一级别上指定多个日志(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 之后的版本。
提供配置文件上下文,其中指定影响连接处理的指令。
将另一个文件或与指定掩码 mask 匹配的文件包含到配置中。包含的文件应该包含语法正确的指令和块。
示例:
include mime.types; include vhosts/*.conf;加载动态模块。1.9.11 之后的版本才可用。
示例:
load_module modules/ngx_mail_module.so;nginx 通过使用锁机制来实现 accept_mutex 和序列化访问共享内存。在大多数系统上,锁使用原子操作来实现,此时该指令被忽略。在其他系统上使用“lock file”机制。该指令为锁文件的名称指定一个前缀。
确定工作进程是否已启动。该指令适用于 nginx 开发人员。
如果禁用 multi_accept,则工作进程将一次接受一个新连接。否则,工作进程将一次接受所有新连接。
如果使用 kqueue 连接处理方法,该指令将被忽略,因为它会报告等待接受的新连接数。
对配置解析时已知的正则表达式启用或禁用“即时编译(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 的文件。
定义硬件 SSL 加速器的名称。
定义命名线程池(named thread pools),用于多线程读取和发送文件而 不会阻塞 工作进程。1.7.11 之后可用。
threads 参数定义池中的线程数。
在池中的所有线程都忙的情况下,新任务将在队列中等待。max_queue 参数限制允许在队列中等待的任务数量。默认情况下,最多可以有 65536 个任务在队列中等待。当队列溢出时,任务完成并出现错误。
减少工作进程中的定时器分辨率,从而减少 gettimeofday() 系统调用的次数。默认情况下,每次收到内核事件时都会调用 gettimeofday()。在降低分辨率的情况下,gettimeofday() 仅在每个指定的时间间隔内调用一次。
示例:
timer_resolution 100ms;内部实施的时间间隔取决于使用的方法:
如果使用 kqueue,则使用 EVFILT_TIMER 过滤器如果使用 eventport,timer_create()其他情况下,setitimer()指定要使用的连接处理方法。通常不需要明确指定,因为 nginx 将默认使用最有效的方法。
定义工作进程使用的用户和组凭据。如果省略组,则使用名称等于用户名的组。
与 epoll 连接处理方法一起使用 aio 时,为单个工作进程设置未完成的异步 I/O 操作的最大数量。1.1.4 开始使用。
设置工作进程可以打开的最大并发连接数。
记住,这个数字包括所有连接(例如与代理服务器的连接等),而不仅仅是与客户的连接。另外,同时连接的实际数量不能超过当前的最大可打开文件的数量限制,可以通过 worker_rlimit_nofile 更改。
将工作进程绑定到一组 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 系统上可用。
定义工作进程的调度优先级,就像 nice 命令所做的那样:负数意味着更高的优先级。允许的范围通常在 -20 到 20 之间变化。
示例:
worker_priority -10;定义工作进程数量。
最佳值取决于许多因素,包括(但不限于)CPU 内核数量,存储数据的硬盘驱动器数量以及加载模式。当对此有疑惑时,最佳选择是将其设置为可用的 CPU 核心数(值“auto”将尝试自动检测它)。
从版本 1.3.8 和 1.2.5 开始支持 auto 参数。
更改工作进程的核心文件最大大小限制(RLIMIT_CORE)。用于在不重新启动主进程的情况下增大限制。
更改工作进程的最大打开文件数量限制(RLIMIT_NOFILE)。用于在不重新启动主进程的情况下增大限制。
配置正常关闭工作进程的超时时间。到期时,nginx 将尝试关闭当前打开的所有连接以便关闭工作进程。
这个指令从 1.11.11 之后可用。
定义工作进程的当前工作目录。主要用于编写核心文件,在这种情况下,工作进程应该具有指定目录的写入权限。
转载于:https://www.cnblogs.com/kika/p/10851588.html
