热门手机游戏秘籍攻略应用教程大全

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今后)这两个功用模块

全局设置指令

  • 语法: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.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历程对应一个二进制掩码,掩码的每一位对应一个CPU。默许状况下,worker不与cpu中心绑定。此指令只适用于Linux和FreeBSD。

举例:

worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;

示意有4个worker历程,第一个绑定到CPU0,第二个绑定到CPU1,以此类推,4个历程离别绑定一个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/2/4/6介入绑定,其他的CPU不分派worker历程。

  • 语法:worker_rlimit_core size;

  • 默许值:无

  • 语境:main

为worker历程修正体系中心转储文件(core file)的大小限定。一般提拔这个值不须要重启主历程。

  • 语法:worker_rlimit_nofile number;

  • 默许值:无

  • 语境:main

修正worker历程最大可翻开句柄数限定。一般提拔这个值不须要重启主历程。

  • 语法:worker_shutdown_timeout time;

  • 默许值:无

  • 语境:main

此指令在v1.11.11中涌现。用于设置平安地完毕一个worker历程的超时时候。

当平安完毕一个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)或一个无类网段或域名,或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指令修正。

以上就是Nginx设置文件实例详解的细致内容,更多请关注ki4网别的相干文章!

赞(0) 打赏

上一篇:

下一篇:

相关推荐

0 条评论关于"Nginx配置文件实例详解【Linux】,Nginx,配置文件,入门,教程,实用"

表情

最新评论

    暂无留言哦~~

支付宝扫一扫打赏

微信扫一扫打赏


Warning: error_log(/www/wwwroot/soxunxi.cn/wp-content/plugins/spider-analyser/#log/log-0920.txt): failed to open stream: No such file or directory in /www/wwwroot/soxunxi.cn/wp-content/plugins/spider-analyser/spider.class.php on line 2900