nginx核心指令

2018-07-19 11:13:22
Syntax:	accept_mutex on | off;
Default: accept_mutex off;
Context: events

服务器负载均衡锁,1.11.3之后默认为关闭。

开启的时候,只有获得锁的进程才能监听端口并接受客户端的新连接,避免惊群发生和负载均衡,但是非常影响性能。

关闭则会出现惊群的现象,一个新连接进来所有空闲的 worker 进程都会被通知,但是最终只有一个 worker能 accept 成功。

不过在支持 EPOLLEXCLUSIVE 标识符的系统上无需开启 accept_mutex,不会出现惊群,性能很好。或者是在 listen 指令上指定 reuseport 标记,不过该标记只有在linux内核版本 3.9+时候才支持。

也就是说,如果内核版本新,那么不会出现惊群现象,并且性能会有显著的提升。

Syntax:	accept_mutex_delay time;
Default: accept_mutex_delay 500ms;
Context: events

抢不到锁过多少时间才能再次去抢。


Syntax:	daemon on | off;
Default: daemon on;
Context: main

是否以后台 daemon 模式运行。


Syntax:	debug_connection address | CIDR | unix:;
Default: —
Context: events

指定特定客户端的调试日志,编译的时候必须指定 --with-debug。

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:;
    ...
}
Syntax:	debug_points abort | stop;
Default: —
Context: main

内部错误发生时,生成 core dump文件。


Syntax:	env variable[=value];
Default: env TZ;
Context: main

指定保留从父进程继承的环境变量,也可以新增环境变量。

env MALLOC_OPTIONS;
env PERL5LIB=/data/site/modules;
env OPENSSL_ALLOW_PROXY_CERTS=1;


Syntax:	error_log file [level];
Default: error_log logs/error.log error;
Context: main, http, mail, stream, server, location

第一个参数指定文件名或者syslog:,或者memory:。第二个参数指定错误等级 debug,info,notice,warn,error,crit,alert,emerg。如果指定 debug,那么编译的时候带上 --with-debug。

Syntax:	events { ... }
Default: —
Context: main

事件块。


Syntax:	include file | mask;
Default: —
Context: any

包含外部文件。

include mime.types;
include vhosts/*.conf;


Syntax:	load_module file;
Default: —
Context: main

This directive appeared in version 1.9.11.

加载动态模块。

load_module modules/ngx_mail_module.so;


Syntax:	master_process on | off;
Default: master_process on;
Context: main

是否开启 master 进程。

Syntax:	multi_accept on | off;
Default: multi_accept off;
Context: events

如果开启,一个worker进程一次会把全部连接都接受进来。


Syntax:	pid file;
Default: pid logs/nginx.pid;
Context: main

指定pid文件。


Syntax:	thread_pool name threads=number [max_queue=number];
Default: thread_pool default threads=32 max_queue=65536;
Context: main

指定线程池来支持非阻塞读取和发送文件。

threads 定义在线程池里线程数,如果在线程池里的线程处于繁忙状态,最多可以排队 max_queue 个任务。超过了报错。


Syntax:	timer_resolution interval;
Default: —
Context: main

定义时间精确度。


Syntax:	use method;
Default: —
Context: events

选择事件模型,一般无需指定,nginx会自动选择最合适的。


Syntax:	worker_aio_requests number;
Default: worker_aio_requests 32;
Context: events

This directive appeared in versions 1.1.4 and 1.0.7.

当使用 aio 和 epoll,该值限制了一个worker进程同时处于aio操作的数量。


Syntax:	worker_connections number;
Default: worker_connections 512;
Context: events

设置一个 worker 进程并发的连接数,注意该连接数包括了譬如反向代理。不能超过系统指定的进程最大的打开文件描述符数。


Syntax:	worker_cpu_affinity cpumask ...;
worker_cpu_affinity auto [cpumask];
Default: —
Context: main

绑定cpu。

worker_processes    4;
worker_cpu_affinity 0001 0010 0100 1000;
#自动
worker_processes auto;
worker_cpu_affinity auto;

#可以加掩码来限制
worker_cpu_affinity auto 01010101;



Syntax:	worker_processes number | auto;
Default: worker_processes 1;
Context: main

定义 worker 进程数,一般为 cpu核心数。


Syntax:	worker_rlimit_core size;
Default: —
Context: main

设置 core 文件的大小。

Syntax:	worker_rlimit_nofile number;
Default: —
Context: main

设置最大的打开文件描述符数量。

Syntax:	worker_shutdown_timeout time;
Default: —
Context: main

设定优雅关闭超时时间,如果改时间过了进程还没有关闭,直接强制关闭。


Syntax:	working_directory directory;
Default: —
Context: main

定义nginx 工作目录,一般用于写入 core dump文件。


 备注

1.测试环境centos7 64位,nginx版本为 1.14.0。
2.读者也可以参考官方文档 nginx documentation
3..原文地址http://www.freecls.com/a/2712/c9


©著作权归作者所有
收藏
推荐阅读
简介
天降大任于斯人也,必先苦其心志。