Nginx配置文件结构

 nginx配置文件由指令(directive)结缘,指令分为三种格局,不难指令和区块指令。

一条粗略指令由指令名、参数和最后的分公司(;)组成,例如: listen 80
backlog 4096;
,在那之中“listen”是指令名,“80”、“backlog”、“4096”都以参数,“;”表示指令结尾。

区块指令由指令名、参数和花括号({})组成,例如: location /imag {}
,当中“location”是指令名,“/imag”是参数,“{}”用于包涵别的指令和象征最终。借使三个区块指令中的大括号能够归纳此外不难指令或区块指令,那么这种区块指令称为“语境(context)”,大多数常用的区块指令都以“语境”。

不被别的其余区块指令包括的吩咐被认为处于main语境中,即main语境是nginx配置文件中最外层语境,任何命令都坐落main语境或main语境的子级语境中。请看上面包车型地铁配备文件例子:

 1 # nginx.conf
 2 worker_processes 2;
 3 events {
 4     use epoll;
 5     worker_connections 1024;
 6 }
 7 http {
 8     include       mime.types;
 9     upstream server_group_a {   
10       server 192.168.1.1:8080;
11       server 192.168.1.2:8080;
12     }
13     server {
14         listen       80;
15         server_name  www.example.com;   
16         location / {
17            proxy_pass  http://server_group_a;        
18         } 
19     }
20 }

上例中,worker_processes、event、http指令处于main语境中,use、worker_connections指令位于event语境中,include、upstream、server指令位于http语境中,两条server指令位于upstream语境中……

nginx软件是由各个分歧功效的模块组合的,因而配置文件也如约那种模块化的布局,nginx主旨模块提供一些大局的安插指令,功效布局指令则由其他的功效模块提供。上例中的worker_processes、event指令都由nginx的主导模块提供,而http指令由http功效模块提供,proxy_pass指令则由http模块的2个子模块提供。

在装置nginx时,暗中同意包涵了部分常用功用模块,使用者也足以由此源码编写翻译安装的格局自由选择安装任何作用模块,在配备nginx时得以搜索功效模块的文书档案,文书档案中会表明那几个成效模块包罗哪些指令,以及这个指令应该在哪些语境下计划,而从语境(指令)查找它包蕴哪些能够布署的下令却是不可信赖的,因为安装的模块差异,包蕴的命令也不雷同,因而配置nginx要求有一对经历,初入门者只好先从参考旁人的演示先导。

功用模块除了http外,还有mail(邮件代理)、stream(TCP、UDP代理,v1.9.0未来)那七个功效模块

 

Nginx实用教程(二):配置文件入门,nginx实用教程

Nginx配置文件结构

 nginx配置文件由指令(directive)结缘,指令分为二种样式,简单指令和区块指令。

一条简简单单指令由指令名、参数和最后的分店(;)组成,例如: listen 80
backlog 4096;
,在那之中“listen”是指令名,“80”、“backlog”、“4096”都以参数,“;”表示指令结尾。

区块指令由指令名、参数和花括号({})组成,例如: location /imag {}
,个中“location”是指令名,“/imag”是参数,“{}”用于包括此外指令和代表最终。假诺二个区块指令中的大括号能够归纳其余不难指令或区块指令,那么那种区块指令称为“语境(context)”,超越百分之六十常用的区块指令都是“语境”。

不被别的其余区块指令包罗的授命被认为处于main语境中,即main语境是nginx配置文件中最外层语境,任何命令都位居main语境或main语境的子级语境中。请看上边包车型地铁配置文件例子:

 1 # nginx.conf
 2 worker_processes 2;
 3 events {
 4     use epoll;
 5     worker_connections 1024;
 6 }
 7 http {
 8     include       mime.types;
 9     upstream server_group_a {   
10       server 192.168.1.1:8080;
11       server 192.168.1.2:8080;
12     }
13     server {
14         listen       80;
15         server_name  www.example.com;   
16         location / {
17            proxy_pass  http://server_group_a;        
18         } 
19     }
20 }

上例中,worker_processes、event、http指令处于main语境中,use、worker_connections指令位于event语境中,include、upstream、server指令位于http语境中,两条server指令位于upstream语境中……

nginx软件是由各类差别功能的模块组合的,因而配置文件也遵照那种模块化的构造,nginx大旨模块提供部分大局的配备指令,成效配置指令则由其它的成效模块提供。上例中的worker_processes、event指令都由nginx的主题模块提供,而http指令由http效用模块提供,proxy_pass指令则由http模块的二个子模块提供。

在设置nginx时,暗许包蕴了有的常用效用模块,使用者也得以经过源码编写翻译安装的主意自由选拔安装别的作用模块,在安插nginx时方可查找成效模块的文档,文书档案中会表明那些效能模块蕴含怎么着指令,以及那个指令应该在什么语境下安排,而从语境(指令)查找它蕴涵哪些能够配备的吩咐却是不可相信的,因为安装的模块差别,包括的一声令下也分歧,由此配置nginx须要有部分经历,初入门者只好先从参考别人的以身作则起头。

功效模块除了http外,还有mail(邮件代理)、stream(TCP、UDP代理,v1.9.0随后)那七个效率模块

 

nginx中事件模块(伊芙nts Module)配置及各类参数含义

大局配置指令

  • 语法:include file | mask;
  • 默认值:无
  • 语境:任意

可在任意语境中运用,将其余布署文件中的指令引入到应用include指令的语境中。被引入的授命要求符合语法和引入的语境要求。举例:

http {
    include mime.types;
    include vhosts/*.conf;
}

将mime.types和vhosts目录下以“.conf”结尾的文本引入到http语境中。

 

  • 语法:deamon on | off;
  • 默认值:deamon on
  • 语境:main

点名nginx是不是以守护进程运转。

 

  • 语法:debug_points abort | stop;
  • 默认值:无
  • 语境:main

用以debug,判断nginx内部错误,特别是判断工作中经过的socket溢出难题。nginx代码中带有了部分调节和测试点,要是debug_points设置为abord,当运转到调节和测试点时会产生3个为主运营音信dump文件,当设置为stop时会截止进度。

 

  • 语法:error_log file [level]
  • 默认值:error_log logs/error.log error;
  • 语境:main, http, mail(v1.9.0后), stream(v1.7.11后), server,
    location

点名日志文件和日志级别。

file能够是点名的文件,也得以是明媒正娶错误输出文件stderr、syslog服务器或内部存款和储蓄器。输出到syslog服务器使用“syslog:”前缀,输出到循环内部存款和储蓄器缓冲区使用“memory:”前缀和缓冲区大小。

level参数内定输出日志的级别,高于钦点级其他日志将被输出。扶助的级别从低到高顺序有:debug、info、notice、warn、error、crit、alert、emerg。

内定debug级别供给编写翻译时设置了debug模块。

 

  • 语法:env variable[=value];
  • 默认值:env TZ;
  • 语境:main

默许情状下,nginx只会延续TZ那一个环境变量,那条指令能够将环境变量传递到nginx进度中,也能够定义新的变量传递到nginx进度中。

 

  • 语法:load_module file;
  • 默认值:无
  • 语境:main

载入动态模块。例如:

load_module module/ngx_mail_module.so;

 

  • 语法:lock_file file;
  • 默认值:lock_file logs/nginx.lock;
  • 语境:main

nginx使用锁的机制来落到实处accept_mutex功用和共享内存,超过四分之二操作系统中锁都以贰个原子操作,那种意况下那条指令无效,还有一对操作系统中应用“锁文件”的的建制来促成锁,此命令用来钦命锁文件前缀名。

 

  • 语法:master_process on | off;
  • 默认值:master_process on;
  • 语境:main

是还是不是启用worker进度,假使设置为off,则不启用worker进度,由master进度处理请求。

 

  • 语法:pcre_jit on | off;
  • 默认值:pcre_jit off;
  • 语境:main

在条分缕析配置文件时对正则表达式启用或剥夺实时编写翻译(PCRE JIT)。

宝马7系CRE JIT能鲜明升高正则表达式的处理速度。

JIT重视PCRE库8.20未来版本,并且在编写翻译时索要钦命–enable-jit参数。也能够将PCRE库作为nginx的模块编写翻译安装(编写翻译nginx钦命–with-pcre=参数),并在编写翻译时钦点–with-pcre-jit参数启用JIT成效。

 

  • 语法:pid file;
  • 默认值:pid nginx.pid;
  • 语境:main

点名pid文件。pid文件存放了master进程的进度号。

 

语法:ssl_engine device;

默认值:无

语境:main

一旦选用了硬件ssl加快装备,使用此命令钦点。

 

  • 语法:thread_pool name threads=number [max_queue=number];
  • 默认值:thread_pool default threads=32 max_queue=65535;
  • 语境:main

【澳门金沙国际】nginx中事件模块,Nginx实用教程。在行使异步IO的图景下,定义命名线程池,并设置线程池大小和等候队列大小。当线程池中保有线程都忙不迭时,新职分会放在等待队列中,假如等待队列满了,职务会报错退出。

命名线程池能够定义多少个,供http模块的异步线程指令(aio)调用。

此命令在v1.7.1第11中学冒出。

 

  • 语法:timer_resolution interval;
  • 默认值:无
  • 语境:main

安装时间精度,收缩worker进度调用系统时间函数的次数。私下认可情形下,每当中心事件都会调用gettimeofday()接口来赢得系统时间,以便nginx计算连接超时等工作,此命令钦赐更新时间的距离,nginx在间隔时间内只调用贰遍系统时间函数。

 

  • 语法:user user
    [group];
  • 默认值:user nobody nodoby;
  • 语境:main

钦赐master运维worker进程使用的linux用户和组。如果组(group)没有点名,那么会私下认可用3个和user同名的组名。

 

  • 语法:worker_processes number | auto
  • 默认值:worker_processes 1
  • 语境:main

点名worker进程的数量。进度数最佳是CPU宗旨数或CPU主题数的翻番。当设置为auto时,nginx会尝试自动获得CPU大旨数并安装。

auto参数从v1.3.8和v1.2.5版本之后扶助。

 

  • 语法:worker_cpu_affinity cpumask …;
  •    worker_cpu_affinity auto [cpumask];
  • 默认值:无
  • 语境:main

将worker进度绑定到CPU大旨,每种worker进程对应二个二进制掩码,掩码的每1位对应四个CPU。私下认可意况下,worker不与cpu大旨绑定。此命令只适用于Linux和FreeBSD。

举例:

worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;

意味着有四个worker进度,第一个绑定到CPU0,第③个绑定到CPU1,以此类推,5个进程分别绑定三个CPU核心。

再例:

worker_processes 2;
worker_cpu_affinity 0101 0101;

代表将率先个进程绑定到CPU0/CPU2,第一个worker进度绑定到CPU1/CPU3,这一个例子适用于超线程场景,即四个基本虚拟出八个CPU线程。

值auto(v1.9.10)允许自动和可用的CPU绑定:

worker_process auto;
worker_cpu_affinity auto;

掩码(mask)可用用于限制有些CPU参预绑定。例如:

worker_cpu_affinity auto 01010101;

只有CPU0/1/2/6参预绑定,别的的CPU不分配worker进度。

 

  • 语法:worker_rlimit_core size;
  • 默认值:无
  • 语境:main

为worker进度修改系统宗旨转储文件(core
file)的高低限制。日常提高那一个值不供给重启主进程。

 

  • 语法:worker_rlimit_nofile number;
  • 默认值:无
  • 语境:main

修改worker进程最大可打开句柄数限制。平时进步这一个值不需求重启主进程。

 

  • 语法:worker_shutdown_timeout time;
  • 默认值:无
  • 语境:main

此命令在v1.11.1第11中学冒出。用于安装安全地停止1个worker进程的晚点时间。

当安全停止八个worker进度时,会停下对worker进度分配新连接,并等候他处理完当前的天职后再脱离,借使设置了晚点时间,超时后nginx会强制关闭worker进度的连天。

 

  • 语法:working_directory directory;
  • 默认值:无
  • 语境:main

内定暗许工作途径。首要用于worker进度导出内部存款和储蓄器转储文件,为worker进程钦定的用户要求有改文件的写入权限。

 

Nginx配置文件结构

 nginx配置文件由指令(directive)重组,指令分为二种情势,简单指令和区块指令。

一条简短指令由指令名、参数和末段的分店(;)组成,例如: listen 80 backlog 4096;
,当中“listen”是指令名,“80”、“backlog”、“4096”都以参数,“;”表示指令结尾。

区块指令由指令名、参数和花括号({})组成,例如: location /imag {}
,个中“location”是指令名,“/imag”是参数,“{}”用于包含此外指令和代表末了。假使二个区块指令中的大括号能够包含别的不难指令或区块指令,那么那种区块指令称为“语境(context)”,超过5/10常用的区块指令都是“语境”。

不被别的其余区块指令包罗的一声令下被认为处于main语境中,即main语境是nginx配置文件中最外层语境,任何命令都放在main语境或main语境的子级语境中。请看上边包车型客车布置文件例子:

 1 # nginx.conf
 2 worker_processes 2;
 3 events {
 4     use epoll;
 5     worker_connections 1024;
 6 }
 7 http {
 8     include       mime.types;
 9     upstream server_group_a {   
10       server 192.168.1.1:8080;
11       server 192.168.1.2:8080;
12     }
13     server {
14         listen       80;
15         server_name  www.example.com;   
16         location / {
17            proxy_pass  http://server_group_a;        
18         } 
19     }
20 }

上例中,worker_processes、event、http指令处于main语境中,use、worker_connections指令位于event语境中,include、upstream、server指令位于http语境中,两条server指令位于upstream语境中……

nginx软件是由各样差别作用的模块组成的,由此配置文件也根据那种模块化的结构,nginx宗旨模块提供部分大局的布局指令,作用配置指令则由其余的功效模块提供。上例中的worker_processes、event指令都由nginx的骨干模块提供,而http指令由http功效模块提供,proxy_pass指令则由http模块的1个子模块提供。

在安装nginx时,私下认可包涵了有的常用作用模块,使用者也得以通过源码编写翻译安装的措施自由选取安装任何功效模块,在安顿nginx时方可寻找作用模块的文书档案,文书档案中会表达那么些功能模块包蕴什么指令,以及这一个指令应该在什么样语境下布署,而从语境(指令)查找它蕴涵哪些可以布署的命令却是不可信的,因为安装的模块不相同,包涵的指令也不相同,因而配置nginx须求有部分经历,初入门者只好先从参考别人的示范初阶。

功效模块除了http外,还有mail(邮件代理)、stream(TCP、UDP代理,v1.9.0随后)那两个功用模块

 

大局配置指令

  • 语法:include file | mask;
  • 默认值:无
  • 语境:任意

可在肆意语境中应用,将其余安顿文件中的指令引入到利用include指令的语境中。被引入的吩咐须求符合语法和引入的语境要求。举例:

http {
    include mime.types;
    include vhosts/*.conf;
}

将mime.types和vhosts目录下以“.conf”结尾的公文引入到http语境中。

 

  • 语法:deamon on | off;
  • 默认值:deamon on
  • 语境:main

钦命nginx是不是以守护进度运营。

 

  • 语法:澳门金沙国际 ,debug_points abort | stop;
  • 默认值:无
  • 语境:main

用来debug,判断nginx内部错误,特别是判定工作中经过的socket溢出标题。nginx代码中富含了一部分调试点,若是debug_points设置为abord,当运营到调节和测试点时会发生三个主导运转新闻dump文件,当设置为stop时会截止进程。

 

  • 语法:error_log file [level]
  • 默认值:error_log logs/error.log error;
  • 语境:main, http, mail(v1.9.0后), stream(v1.7.11后), server,
    location

点名日志文件和日志级别。

file能够是点名的文本,也足以是行业内部错误输出文件stderr、syslog服务器或内部存款和储蓄器。输出到syslog服务器使用“syslog:”前缀,输出到循环内部存款和储蓄器缓冲区使用“memory:”前缀和缓冲区大小。

level参数内定输出日志的级别,高于钦定级其他日志将被输出。扶助的级别从低到高顺序有:debug、info、notice、warn、error、crit、alert、emerg。

点名debug级别须要编写翻译时设置了debug模块。

 

  • 语法:env variable[=value];
  • 默认值:env TZ;
  • 语境:main

默许情状下,nginx只会三番五次TZ那几个环境变量,那条指令能够将环境变量传递到nginx进度中,也得以定义新的变量传递到nginx进度中。

 

  • 语法:load_module file;
  • 默认值:无
  • 语境:main

载入动态模块。例如:

load_module module/ngx_mail_module.so;

 

  • 语法:lock_file file;
  • 默认值:lock_file logs/nginx.lock;
  • 语境:main

nginx使用锁的体制来兑现accept_mutex功效和共享内部存款和储蓄器,超越5/10操作系统中锁都以3个原子操作,那种场所下那条指令无效,还有一部分操作系统中动用“锁文件”的的编写制定来落到实处锁,此命令用来钦命锁文件前缀名。

 

  • 语法:master_process on | off;
  • 默认值:master_process on;
  • 语境:main

是不是启用worker进度,如若设置为off,则不启用worker进度,由master进度处理请求。

 

  • 语法:pcre_jit on | off;
  • 默认值:pcre_jit off;
  • 语境:main

在解析配置文件时对正则表达式启用或剥夺实时编译(PCRE JIT)。

LANDCRE JIT能分明提高正则表达式的处理速度。

JIT依赖PCRE库8.20事后版本,并且在编写翻译时需求钦命–enable-jit参数。也得以将PCRE库作为nginx的模块编写翻译安装(编写翻译nginx钦命–with-pcre=参数),并在编译时钦点–with-pcre-jit参数启用JIT功效。

 

  • 语法:pid file;
  • 默认值:pid nginx.pid;
  • 语境:main

钦命pid文件。pid文件存放了master进程的进度号。

 

语法:ssl_engine device;

默认值:无

语境:main

比方使用了硬件ssl加快装备,使用此命令内定。

 

  • 语法:thread_pool name threads=number [max_queue=number];
  • 默认值:thread_pool default threads=32 max_queue=65535;
  • 语境:main

在利用异步IO的情状下,定义命名线程池,并设置线程池大小和等待队列大小。当线程池中全体线程都忙于时,新职务会放在等待队列中,若是等待队列满了,任务会报错退出。

命名线程池能够定义多少个,供http模块的异步线程指令(aio)调用。

此命令在v1.7.1第11中学出现。

 

  • 语法:timer_resolution interval;
  • 默认值:无
  • 语境:main

安装时间精度,收缩worker进度调用系统时间函数的次数。私下认可意况下,各个大旨事件都会调用gettimeofday()接口来赢得系统时间,以便nginx总结连接超时等工作,此命令内定更新时间的间隔,nginx在间隔时间内只调用一遍系统时间函数。

 

  • 语法:user user
    [group];
  • 默认值:user nobody nodoby;
  • 语境:main

钦定master运转worker进度使用的linux用户和组。假设组(group)没有点名,那么会私下认可用贰个和user同名的组名。

 

  • 语法:worker_processes number | auto
  • 默认值:worker_processes 1
  • 语境:main

点名worker进度的数目。进度数最棒是CPU主题数或CPU大旨数的倍数。当设置为auto时,nginx会尝试自动获取CPU宗旨数并设置。

auto参数从v1.3.8和v1.2.5版本之后帮助。

 

  • 语法:worker_cpu_affinity cpumask …;
  •    worker_cpu_affinity auto [cpumask];
  • 默认值:无
  • 语境:main

将worker进度绑定到CPU大旨,每一个worker进度对应贰个二进制掩码,掩码的每1位对应二个CPU。暗中同意情状下,worker不与cpu宗旨绑定。此命令只适用于Linux和FreeBSD。

举例:

worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;

意味着有陆个worker进度,第3个绑定到CPU0,第一个绑定到CPU1,以此类推,多少个经过分别绑定叁个CPU宗旨。

再例:

worker_processes 2;
worker_cpu_affinity 0101 0101;

代表将首个经过绑定到CPU0/CPU2,首个worker进度绑定到CPU1/CPU3,这一个事例适用于超线程场景,即二个着力虚拟出五个CPU线程。

值auto(v1.9.10)允许自动和可用的CPU绑定:

worker_process auto;
worker_cpu_affinity auto;

掩码(mask)可用用于限制有些CPU加入绑定。例如:

worker_cpu_affinity auto 01010101;

唯有CPU0/1/2/6参预绑定,其余的CPU不分配worker进程。

 

  • 语法:worker_rlimit_core size;
  • 默认值:无
  • 语境:main

为worker进程修改系统主旨转储文件(core
file)的尺寸限制。常常升高那几个值不须求重启主进度。

 

  • 语法:worker_rlimit_nofile number;
  • 默认值:无
  • 语境:main

修改worker进度最大可打开句柄数限制。日常提高那个值不必要重启主进度。

 

  • 语法:worker_shutdown_timeout time;
  • 默认值:无
  • 语境:main

此命令在v1.11.1第11中学冒出。用于安装安全地结束三个worker进度的晚点时间。

当安全截至2个worker过程时,会停下对worker进度分配新连接,并等候他处理完当前的天职后再脱离,借使设置了晚点时间,超时后nginx会强制关闭worker进度的连天。

 

  • 语法:working_directory directory;
  • 默认值:无
  • 语境:main

钦赐暗中认可工作路径。重要用来worker进度导出内部存款和储蓄器转储文件,为worker进度钦点的用户须要有改文件的写入权限。

 

 

连日来处理控制指令

  • 语法:events { … }
  • 默认值:无
  • 语境:main

效用只是开辟二个命令区块,events语境中安顿的下令用于控制连接处理作为。

 

  • 语法:accept_mutex on | off;
  • 默认值:accept_mutex off;
  • 语境:events

当启用那么些参数时,会动用互斥锁交替给worker进程分配新连接,不然话全数worker进度会争抢新连接,即或促成所谓的“惊群难题”,惊群难点会使nginx的闲暇worker进度不能进入休眠状态,造成系统财富占用过多。启用此参数会肯定水准上导致后台服务器负荷不平均,可是在高并发的情状下,关闭此参数可以拉长nginx的吞吐量。

在支撑epoll的操作系统上不须求启用accept_mutex(v1.11.3后),使用了reuseport成效也不必要启用(v1.9.1后,必要操作系统协助SO_REUSEPORT
socket选项,Linux 3.9+)。

在v1.11.3原先版本中,默许值为on。

 

  • 语法:accept_mutex_delay time;
  • 默认值:accept_mutex_delay 500ms;
  • 语境:events

如果accept_mutex参数启用,当1个空余worker进度尝试得到互斥锁时发现有另2个worker进度已经收获互斥锁并处理新连接,这么些空闲的worker进度等待下一遍获得互斥锁尝试的时间。而赢得互斥锁的历程在处理完当前连年后,会应声尝试得到互斥锁,因而此数值较大或延续压力较小时,会导致部分worker进度总是空闲,一部分进程总是应接不暇的情形。

 

  • 语法:debug_connection address | network | unix:;
  • 默认值:无
  • 语境:events

亟需debug模块帮忙,需确认安装时包括了debug模块,能够选取nginx
-V命令明显包罗–wih-debug参数。

对一定的客户发起的连日开启debugging级别日志,用于分析和拍错。能够钦命IPv4可能IPv6地址(v1.3.0,v1.2.1)或贰个无类网段或域名,或UNIX
socket(v1.3.0,v1.2.1)。例如:

events {
    debug_connection 127.0.0.1;
    debug_connection localhost;
    debug_connection 192.168.2.0/24;
    debug_connection 2001:0db8::/32;
    debug_connection unix:;
}

非钦赐连接的日记级别还是由error_log一声令下决定。

 

  • 语法:multi_accept on | off;
  • 默认值:multi_accept off;
  • 语境:events

当设置为off时,1个worker进度得到互斥锁时一遍只处理一个新连接,假使设置为on,则叁次性将具备新连接都分配给拿走当前互斥锁的worker进度、当使用kqueue连接处理格局时(use
kqueue),此项命令无效。

 

  • 语法:use method;
  • 默认值:无
  • 语境:events

钦命连接处理格局,常常不须求钦命,nginx会自动使用最可行的法子。

再而三处理情势用于决定用哪些点子从当前的连接池中找出什么连接已经准备好传输/接收数据。常见的连接处理方式有:

select(需要select模块)、poll(需要poll模块)、kqueue(macOS/FreeBSD
4.1+/OpenBSD 2.9+)、epoll(Linux 2.6+)、/dev/poll(Solaris 7 11/99+,
HP/UX 11.22+ (eventport), IRIX 6.5.15+, and Tru64 UNIX
5.1A+)、eventport(Solaris 10+)

 

  • 语法:worker_aio_requests number;
  • 默认值:worker_aio_requests 32;
  • 语境:events

在v1.1.4和1.0.7中冒出。当启用aio(异步IO)和epoll连接处理格局后,单个worker进度最大的未成功异步IO操作数。

 

  • 语法:worker_connections number;
  • 默认值:worker_connections 512;
  • 语境:events

单个worker进度可处理的最大并发连接数限制。

本条连接数蕴涵和后台服务器之间的连年在内的享有的总是,而不仅是与客户的总是。全体worker进度的总连接数(即worker_connections
×
worker_processes
)不能够超越操作系统最大可打开句柄数的界定(nofile),nofile限制能够经过worker_rlimit_nofile一声令下修改。

 

比方觉得本文对你有援救,请扫描后边的二维码给予捐献赠送,您的支撑是我继续写出更好小说的重力!

澳门金沙国际 1

全局配置指令

  • 语法:include file | mask;
  • 默认值:无
  • 语境:任意

可在自由语境中利用,将其他安顿文件中的指令引入到利用include指令的语境中。被引入的授命供给符合语法和引入的语境须要。举例:

http {
    include mime.types;
    include vhosts/*.conf;
}

将mime.types和vhosts目录下以“.conf”结尾的文件引入到http语境中。

 

  • 语法:deamon on | off;
  • 默认值:deamon on
  • 语境:main

点名nginx是还是不是以守护进度运转。

 

  • 语法:debug_points abort | stop;
  • 默认值:无
  • 语境:main

用于debug,判断nginx内部错误,尤其是判断工作中经过的socket溢出难题。nginx代码中涵盖了部分调节和测试点,假使debug_points设置为abord,当运转到调节和测试点时会发生三个核心运营音讯dump文件,当设置为stop时会停止进程。

 

  • 语法:error_log file [level]
  • 默认值:error_log logs/error.log error;
  • 语境:main, http, mail(v1.9.0后), stream(v1.7.11后), server,
    location

点名日志文件和日志级别。

file能够是点名的文本,也足以是正经错误输出文件stderr、syslog服务器或内部存款和储蓄器。输出到syslog服务器使用“syslog:”前缀,输出到循环内部存储器缓冲区使用“memory:”前缀和缓冲区大小。

level参数钦定输出日志的级别,高于钦定级其他日志将被输出。协助的级别从低到高顺序有:debug、info、notice、warn、error、crit、alert、emerg。

钦点debug级别供给编译时设置了debug模块。

 

  • 语法:env variable[=value];
  • 默认值:env TZ;
  • 语境:main

暗许意况下,nginx只会持续TZ那么些环境变量,那条指令能够将环境变量传递到nginx进度中,也得以定义新的变量传递到nginx进度中。

 

  • 语法:load_module file;
  • 默认值:无
  • 语境:main

载入动态模块。例如:

load_module module/ngx_mail_module.so;

 

  • 语法:lock_file file;
  • 默认值:lock_file logs/nginx.lock;
  • 语境:main

nginx使用锁的建制来促成accept_mutex功用和共享内部存款和储蓄器,超过二分之一操作系统中锁都以叁个原子操作,那种气象下那条指令无效,还有部分操作系统中选拔“锁文件”的的机制来兑现锁,此命令用来钦命锁文件前缀名。

 

  • 语法:master_process on | off;
  • 默认值:master_process on;
  • 语境:main

是否启用worker进度,借使设置为off,则不启用worker进度,由master进程处理请求。

 

  • 语法:pcre_jit on | off;
  • 默认值:pcre_jit off;
  • 语境:main

在解析配置文件时对正则表达式启用或剥夺实时编写翻译(PCRE JIT)。

RCRE JIT能精通进步正则表明式的处理速度。

JIT信赖PCRE库8.20从此版本,并且在编写翻译时索要钦点–enable-jit参数。也得以将PCRE库作为nginx的模块编写翻译安装(编写翻译nginx内定–with-pcre=参数),并在编译时钦赐–with-pcre-jit参数启用JIT效能。

 

  • 语法:pid file;
  • 默认值:pid nginx.pid;
  • 语境:main

点名pid文件。pid文件存放了master进度的进度号。

 

语法:ssl_engine device;

默认值:无

语境:main

比方利用了硬件ssl加快装备,使用此命令钦定。

 

  • 语法:thread_pool name threads=number [max_queue=number];
  • 默认值:thread_pool default threads=32 max_queue=65535;
  • 语境:main

在选用异步IO的景况下,定义命名线程池,并设置线程池大小和等待队列大小。当线程池中有着线程都忙于时,新职务会放在等待队列中,假诺等待队列满了,职责会报错退出。

命名线程池能够定义三个,供http模块的异步线程指令(aio)调用。

此命令在v1.7.1第11中学冒出。

 

  • 语法:timer_resolution interval;
  • 默认值:无
  • 语境:main

设置时间精度,减少worker进程调用系统时间函数的次数。暗中同意景况下,每其中央事件都会调用gettimeofday()接口来赢得系统时间,以便nginx计算连接超时等工作,此命令内定更新时间的间距,nginx在间隔时间内只调用3回系统时间函数。

 

  • 语法:user user [group];
  • 默认值:user nobody nodoby;
  • 语境:main

点名master运营worker进度使用的linux用户和组。假若组(group)没有点名,那么会私下认可用一个和user同名的组名。

 

  • 语法:worker_processes number | auto
  • 默认值:worker_processes 1
  • 语境:main

钦命worker进度的数量。进程数最佳是CPU核心数或CPU大旨数的倍数。当设置为auto时,nginx会尝试自动获取CPU大旨数并设置。

auto参数从v1.3.8和v1.2.5版本之后帮助。

 

  • 语法:worker_cpu_affinity cpumask …;
  •    worker_cpu_affinity auto [cpumask];
  • 默认值:无
  • 语境:main

将worker过程绑定到CPU主旨,各样worker进度对应三个二进制掩码,掩码的每一人对应三个CPU。暗许情形下,worker不与cpu主题绑定。此命令只适用于Linux和FreeBSD。

举例:

worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;

意味着有多少个worker进程,第二个绑定到CPU0,第二个绑定到CPU1,以此类推,七个经过分别绑定三个CPU宗旨。

再例:

worker_processes 2;
worker_cpu_affinity 0101 0101;

代表将率先个经过绑定到CPU0/CPU2,第四个worker进度绑定到CPU1/CPU3,那些事例适用于超线程场景,即三个核心虚拟出三个CPU线程。

值auto(v1.9.10)允许自动和可用的CPU绑定:

worker_process auto;
worker_cpu_affinity auto;

掩码(mask)可用用于限制某些CPU加入绑定。例如:

worker_cpu_affinity auto 01010101;

只有CPU0/百分之五十/6参与绑定,其余的CPU不分红worker进度。

 

  • 语法:worker_rlimit_core size;
  • 默认值:无
  • 语境:main

为worker进度修改系统宗旨转储文件(core
file)的尺寸限制。平时提高这么些值不供给重启主进度。

 

  • 语法:worker_rlimit_nofile number;
  • 默认值:无
  • 语境:main

修改worker进度最大可打开句柄数限制。平日进步那些值不供给重启主进程。

 

  • 语法:worker_shutdown_timeout time;
  • 默认值:无
  • 语境:main

此命令在v1.11.1第11中学冒出。用于安装安全地结束二个worker进度的超时时间。

当安全甘休1个worker过程时,会告一段落对worker进度分配新连接,并等候她处理完当前的天职后再脱离,如若设置了晚点时间,超时后nginx会强制关闭worker进度的连天。

 

  • 语法:working_directory directory;
  • 默认值:无
  • 语境:main

点名暗许工作途径。首要用来worker进程导出内部存款和储蓄器转储文件,为worker进度钦定的用户供给有改文件的写入权限。

 

一而再处理控制指令

  • 语法:events { … }
  • 默认值:无
  • 语境:main

功效只是开拓三个发令区块,events语境中配备的一声令下用于控制连接处理作为。

 

  • 语法:accept_mutex on | off;
  • 默认值:accept_mutex off;
  • 语境:events

当启用这几个参数时,会使用互斥锁交替给worker进度分配新连接,不然话全体worker进程会争抢新连接,即或导致所谓的“惊群难题”,惊群难点会使nginx的闲暇worker进度不恐怕进去休眠状态,造成系统能源占用过多。启用此参数会自然水平上导致后台服务器负荷不平均,然则在高并发的气象下,关闭此参数能够抓实nginx的吞吐量。

在支撑epoll的操作系统上不须求启用accept_mutex(v1.11.3后),使用了reuseport功用也不供给启用(v1.9.1后,须求操作系统帮忙SO_REUSEPORT
socket选项,Linux 3.9+)。

在v1.11.3从前版本中,暗许值为on。

 

  • 语法:accept_mutex_delay time;
  • 默认值:accept_mutex_delay 500ms;
  • 语境:events

如果accept_mutex参数启用,当二个空闲worker进度尝试获得互斥锁时意识有另八个worker进度已经获得互斥锁并拍卖新连接,那么些空闲的worker进度等待下一遍获得互斥锁尝试的年月。而博得互斥锁的进度在拍卖完当前连年后,会立马尝试获得互斥锁,由此此数值较大或连续压力较小时,会导致部分worker进度总是空闲,一部分进度总是应接不暇的情形。

 

  • 语法:debug_connection address | network | unix:;
  • 默认值:无
  • 语境:events

亟待debug模块帮衬,需确认安装时包含了debug模块,能够动用nginx
-V命令鲜明包括–wih-debug参数。

对特定的客户发起的连天开启debugging级别日志,用于分析和拍错。可以内定IPv4可能IPv6地址(v1.3.0,v1.2.1)或1个无类网段或域名,或UNIX
socket(v1.3.0,v1.2.1)。例如:

events {
    debug_connection 127.0.0.1;
    debug_connection localhost;
    debug_connection 192.168.2.0/24;
    debug_connection 2001:0db8::/32;
    debug_connection unix:;
}

非钦赐连接的日记级别依旧由error_log命令决定。

 

  • 语法:multi_accept on | off;
  • 默认值:multi_accept off;
  • 语境:events

当设置为off时,二个worker进度得到互斥锁时二回只处理三个新连接,假诺设置为on,则二回性将具有新连接都分配给拿走当前互斥锁的worker进度、当使用kqueue连接处理格局时(use
kqueue),此项命令无效。

 

  • 语法:use method;
  • 默认值:无
  • 语境:events

钦点连接处理方式,平常不须求钦命,nginx会自动使用最管用的艺术。

接连处理情势用于决定用哪些艺术从脚下的连接池中找出哪些连接已经准备好传输/接收数据。常见的接连处理格局有:

select(需要select模块)、poll(需要poll模块)、kqueue(macOS/FreeBSD
4.1+/OpenBSD 2.9+)、epoll(Linux 2.6+)、/dev/poll(Solaris 7 11/99+,
HP/UX 11.22+ (eventport), IRIX 6.5.15+, and Tru64 UNIX
5.1A+)、eventport(Solaris 10+)

 

  • 语法:worker_aio_requests number;
  • 默认值:worker_aio_requests 32;
  • 语境:events

在v1.1.4和1.0.7中冒出。当启用aio(异步IO)和epoll连接处理格局后,单个worker进度最大的未到位异步IO操作数。

 

  • 语法:worker_connections number;
  • 默认值:worker_connections 512;
  • 语境:events

单个worker进度可处理的最大并发连接数限制。

以此连接数包括和后台服务器之间的连日在内的兼具的连日,而不仅是与客户的连年。全数worker进度的总连接数(即worker_connections
×
worker_processes
)无法当先操作系统最大可打开句柄数的限制(nofile),nofile限制能够经过worker_rlimit_nofile指令修改。

 

比方认为本文对你有帮带,请扫描前边的二维码给予捐献赠送,您的支撑是作者继续写出更好小说的引力!

澳门金沙国际 2

摘要

一而再处理控制指令

  • 语法:events { … }
  • 默认值:无
  • 语境:main

功效只是开辟叁个发令区块,events语境中配备的命令用于控制连接处理作为。

 

  • 语法:accept_mutex on | off;
  • 默认值:accept_mutex off;
  • 语境:events

当启用那一个参数时,会使用互斥锁交替给worker进度分配新连接,不然话全体worker进程会争抢新连接,即或促成所谓的“惊群难点”,惊群难题会使nginx的闲暇worker进度不可能进去休眠状态,造成系统能源占用过多。启用此参数会肯定水准上导致后台服务器负荷不平均,不过在高并发的图景下,关闭此参数能够抓牢nginx的吞吐量。

在支撑epoll的操作系统上不须求启用accept_mutex(v1.11.3后),使用了reuseport功效也不须求启用(v1.9.1后,需求操作系统扶助SO_REUSEPORT
socket选项,Linux 3.9+)。

在v1.11.3原先版本中,暗中同意值为on。

 

  • 语法:accept_mutex_delay time;
  • 默认值:accept_mutex_delay 500ms;
  • 语境:events

如果accept_mutex参数启用,当2个空余worker进度尝试得到互斥锁时意识有另二个worker进度已经收获互斥锁并处理新连接,那一个空闲的worker进度等待下一回获得互斥锁尝试的岁月。而获取互斥锁的进度在拍卖完当前连接后,会即时尝试获得互斥锁,因而此数值较大或一而再压力较小时,会导致部分worker进度总是空闲,一部分过程总是应接不暇的场地。

 

  • 语法:debug_connection address | network | unix:;
  • 默认值:无
  • 语境:events

急需debug模块帮助,需确认安装时包含了debug模块,能够利用nginx
-V命令显明包罗–wih-debug参数。

对特定的客户发起的连日开启debugging级别日志,用于分析和拍错。能够钦命IPv4可能IPv6地址(v1.3.0,v1.2.1)或贰个无类网段或域名,或UNIX
socket(v1.3.0,v1.2.1)。例如:

events {
    debug_connection 127.0.0.1;
    debug_connection localhost;
    debug_connection 192.168.2.0/24;
    debug_connection 2001:0db8::/32;
    debug_connection unix:;
}

非钦赐连接的日志级别依旧由error_log指令决定。

 

  • 语法:multi_accept on | off;
  • 默认值:multi_accept off;
  • 语境:events

当设置为off时,1个worker进度得到互斥锁时贰回只处理叁个新连接,如若设置为on,则一次性将享有新连接都分配给拿走当前互斥锁的worker进度、当使用kqueue连接处理方式时(use
kqueue),此项命令无效。

 

  • 语法:use method;
  • 默认值:无
  • 语境:events

钦命连接处理情势,平日不须要钦命,nginx会自动使用最有效的不二法门。

接连处理格局用于决定用什么点子从当前的连接池中找出怎么着连接已经准备好传输/接收数据。常见的连接处理格局有:

select(需要select模块)、poll(需要poll模块)、kqueue(macOS/FreeBSD
4.1+/OpenBSD 2.9+)、epoll(Linux 2.6+)、/dev/poll(Solaris 7 11/99+,
HP/UX 11.22+ (eventport), IRIX 6.5.15+, and Tru64 UNIX
5.1A+)、eventport(Solaris 10+)

 

  • 语法:worker_aio_requests number;
  • 默认值:worker_aio_requests 32;
  • 语境:events

在v1.1.4和1.0.7中冒出。当启用aio(异步IO)和epoll连接处理格局后,单个worker进度最大的未形成异步IO操作数。

 

  • 语法:worker_connections number;
  • 默认值:worker_connections 512;
  • 语境:events

单个worker进度可处理的最大并发连接数限制。

本条连接数包蕴和后台服务器之间的总是在内的享有的接连,而不仅是与客户的连接。全数worker进度的总连接数(即worker_connections
× worker_processes
)无法抢先操作系统最大可打开句柄数的限量(nofile),nofile限制能够透过worker_rlimit_nofile指令修改。

 

借使觉得本文对你有扶助,请扫描前面包车型客车二维码给予捐献赠送,您的援助是笔者继续写出更好小说的引力!

澳门金沙国际 3

Nginx配置文件结构 nginx配置文件由 指令(directive)
组成,指令分为二种方式,简单指令…

操纵Nginx处理连接的点子

指令

accept_mutex

语法:accept_mutex [ on | off ] 

默认值:on 

Nginx使用连接互斥锁举办每一种的accept()系统调用

  www.2cto.com  

accept_mutex_delay

语法:accept_mutex_delay Nms; 

默认值:500ms

借使两个进度没有互斥锁,它将至少在那些值的岁月后被回收,暗中认可是500ms

debug_connection

语法:debug_connection [ip | CIDR] 

默认值:none 

0.3.54本子后,那一个参数帮忙CIDLAND地址池格式。

那个参数能够内定只记录由某些客户端IP产生的debug音讯。

理所当然你也可以内定七个参数。
 

[html] 

error_log /var/log/nginx/errors;  

events {  

  debug_connection   192.168.1.1;  

}  

fffdgfdgfd  

  

devpoll_changes  

  

devpoll_events  

  

kqueue_changes  

  

kqueue_events  

epoll_events

语法:devpoll_changes 

默认值:

这个参数钦命了遵从分明措施传送到也许来自内核的轩然大波数,暗许devpoll的值为32,别的为512。

  www.2cto.com  

multi_accept

语法:multi_accept [ on | off ] 

默认值:off 

multi_accept在Nginx接到三个新连接通告后调用accept()来经受尽量多的连天
 

rtsig_signo

语法:rtsig_signo 

默认值:

Nginx在rtsig格局启用后使用四个信号,该指令钦赐第一个信号编号,第一个信号编号为率先个加1

默认rtsig_signo的值为SIGRTMIN+10 (40)。

rtsig_overflow_events

rtsig_overflow_test

rtsig_overflow_threshold
 

语法:rtsig_overflow_* 

默认值:

这么些参数钦命怎么着处理rtsig队列溢出。当溢出发生在nginx清空rtsig队列时,它们将三番五次调用poll()和
rtsig.poll()来拍卖未成功的风云,直到rtsig被排空避防患新的溢出,当溢出处理完结,nginx再度启用rtsig情势。

rtsig_overflow_events specifies钦命经过poll()的轩然大波数,暗许为16

rtsig_overflow_test内定poll()处理多少事件后nginx将排空rtsig队列,私下认可值为32

rtsig_overflow_threshold只好运转在Linux
2.4.x内核下,在排空rtsig队列前nginx检查基本以分明队列是何许被填满的。私下认可值为百分之十,“rtsig_overflow_threshold
3”意为1/3。

 

use

语法:use [ kqueue | rtsig | epoll | /dev/poll | select | poll |
eventport ] 

默认值:

要是你在./configure的时候钦定了不断3个轩然大波模型,你可以因此那么些参数告诉nginx你想使用哪三个事件模型,暗中认可处境下nginx在编写翻译时会检查最符合您系统的风云模型。

您能够在此地看看全数可用的轩然大波模型并且只要在./configure时激活它们。

  www.2cto.com  

worker_connections

语法:worker_connections 

默认值:

worker_connections和worker_proceses(见主模块)允许你总括理论最明斯克接数:

最亚松森接数 = worker_processes * worker_connections

在反向代理环境下:

最达累斯萨Lamb接数 = worker_processes * worker_connections/4

鉴于浏览器暗中认可打开1个一连到服务器,nginx使用来源同一地址池的fds(文件讲述符)与上下端相连接

Module)配置及顺序参数含义 摘要 控制Nginx处理连接的法门 指令
accept_mutex 语法:accept_mutex [ on | off ] 默认值:on
Ngi…

相关文章