基本模块指令

什么是基本模块?

基本模块提供的指令允许你定义nginx基本功能的变量,在编译时它们不能被禁用,因此它们提供的指令和区段总是有效,有下面三个基本模块:

  • 核心模块(core module)–基本特征和指令,例如进程管理和安全
  • 事件模块(events module)–在nginx内部机制配置网络使用能力
  • 配置模块(configuration module)–提供包含机制

nginx进程结构

nginx应用程序只是一个二进制文件(轻量级的后台进程),查看进程:

# ps fuax|grep nginx


这里写图片描述
nginx的master进程的用户和用户组通常为root/root,master进程通常不处理任何客户端请求,master进程的主要工作是产生worker进程,worker进程以配置文件指定的用户和用户组运行,可以定义多个worker进程和每个worker进程的最大连接数。
这里写图片描述

核心模块指令

核心模块的大多数指令需要放在配置文件的根部,而且只能使用一次,有些指令只能在特定的环境当中使用。

指令和使用环境语法和描述
daemon值:on/off
语法:<daemon on;>
默认值:on
env语法:env MY_VARIABLE;
env MY_VARIABLE=my_value;
允许重定义环境变量
error_log(使用环境:main(根部)、http、server、location)语法:
路径:error_log /path;
默认值:logs/error.log error
level级别:debug、info、notice、warn、error、crit(详细程度由高到底:debug提供全部日子记录,crit仅报告关键错误)
能够提供不同的错误日志级别:应用程序、HTTP服务、虚拟主机、虚拟主机目录
通过重定向,日志记录可以重定向到/dev/null,在配置文件根部禁用错误日志记录:error_log /dev/null crit;
lock_file语法:文件路径:lock_file /path
默认值:在编译时定义
使用lock文件是为了互拆现象,默认不使用,除非在编译时已启用
log_not_found(使用环境:main、http、server、location)值:on(默认)/off
开启或禁用记录404错误,如果日志中填满了无法访问favicon.ico或robots.txt文件而产生的404错误,可以考虑将其关闭
master_process值:on(默认)/off
默认开启了master进程和woker进程,若禁用则只开启master进程,客户端无法连接服务器,该指令仅用于测试
pid语法:
文件路径:pid logs/nginx.pid
默认值:在编译时定义
用于配置nginx守护进程的pid文件路径
ssl_engine语法:
字符串:ssl_engine enginename;
默认值:无
enginename是一个系统的有效硬件SSL加速器,要检测有效的SSL加速器装置,可以在shell下使用命令:openssl engine -t
thread_stack_size语法:
thread_stack_size 1m;
默认值:none
定义线程堆栈大小,参考下面的worker_threads指令
timer_resolution语法:
timer_resolution:100ms;
默认值:无
控制系统调用gettimeofday()时间间隔,它会调用该函数与系统内部时钟同步。如果这个值没有指定,在每一次内核事件通知后时钟都会被刷新
user语法:
user username ;
user username groupname;
默认值:在编译时定义,若未定义,则使用nginx的master进程的用户和用户组
该指令将允许你定义用户和组别,nginx的worker进程将使用这些设置运行
worker_threads语法:
worker_threads 8;
默认值:无
为每一个worker进程定义一定数量的线程
警告:线程在默认情况下禁用
worker_cpu_affinity语法:
worker_cpu_affinity 1000 0100 0010 0001;
worker_cpu_affinity 10 10 01 01;
worker_cpu_affinity ;
默认值:无
该指令与woker_processes协同工作,它可以让你的worker进程影响cpu内核,数字序列与worker进程一样多。
如果你配置nginx使用3个worker进程,那么就会有3个数字序列(可以理解为3个块),对于双核cpu,那么每一个块将会有两位数字,worker_cpu_affinity 01 01 10
1、第一块(01)指第一个worker进程会受第二个内核影响
2、第二块(01)指第二个worker进程会受第二个内核影响
3、第三块(10)指第三个worker进程会受第一个内核影响
注意:worker_cpu_affinity只建议针对多核处理器而非超线程处理器
语法:worker_cpu_affinity cpummask [cpumask]
默认值:无
说明:该选项仅适用于Linux,该选项允许你将worker进程绑定到一个CPU上,通过调用sched_setaffinity() 例如:
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
以上指令实现了将每一个进程绑定到一个cpu
worker_processes 2;worker_cpu_affinity 0101 1010;
以上指令实现了将第一个worker进程绑定到cpu0/cpu2
第二个worker进程绑定到cpu1/cpu3
这适用于超线程(HTT)cpu
worker_priority语法:
worker_priority 0
默认值:0
定义worker进程优先级,从-20(最高级)到19(最低级),注意:内核进程运行在-5优先级,因此不推荐值设置为小于-5
worker_processes语法:
worker_processes 4;
默认值:1
定义工作进程数量,nginx可以将请求的处理分到多个工作进程,如果属于cpu多核建议增加该值,如果一个进程由于慢的I/o操作被阻塞,那么进入的工作进程将转交给其他工作进程
:根据负载自动调整worker进程设置:worker_processes auto;
worker_rlimit_core语法:
worker_rlimit_core 100m;默认值:无;定义每个woker进程的内核文件大小
worker_rlimit_nofile语法:
worker_rlimit_nofile 10000;
默认值:无
定义一个worker进程可以同时处理的文件数量
worker_rlimit_sigpending语法:
worker_rlimit_sigpending 10000
定义每个用户(调用进程的用户ID)能够被排入队列的信号(signal)数量,如果队列满,会由于这个限制导致信号被忽略
working_directory语法:
目录路径:working_directory /usr/local/nginx/
默认值:在配置编译时通过prefix开关选项指定
这是worker进程的工作目录,仅用于定义内核文件位置。对于该目录,worker进程用户必须有写的权限

Events模块

Events模块提供的指令可以用来配置网络机制。

指令描述
accept_mutex值:on(默认)/off
控制是否接受使用互斥锁来打开套接字监听
accept_mutex_delay语法:
accept_mutex_delay 500ms;(默认)
定义一个worker进程在再次获取资源之前应等待的时间。如果指令accept_mutex设置为off,则不使用该值
debug_connection语法:
ip地址或CIDR段
对于匹配的ip地址或ip区段,需记忆详细的日志信息,这些信息存放在error_log指令指定的文件中
注意:为了使用该功能,在配置编译nginx时使用开关变量debug
multi_accept语法:
on/off(默认)
定义nginx是否立刻接受从所有监听队列进入的连接
use值:/dev/poll、epoll、eventport、kqueue、rtsig或select use kqueue
默认值:编译时定义
在有效的模型中选择event的模型类型(在编译时开启),但是nginx会自动选择最合适的一个。
1、select:默认的标准模块,如果OS不支持更有效的模型,则使用它(这种模型也是在windows下仅有的模型)
2、poll:在自动选择上优先与select,但在所有系统上都无效
3、kqueue:一种在FreeBSD1 4.1+、OpenBSD02.9+、NetBSD2.0、MacOS X下性能高效的模型
4、epoll:一种基于linux2.6+操作系统下有效的模型
5、rtsig:实时信号,对于linux2.2.19有效,但不适用于高流量情况,作为默认,系统设置仅允许1024个队列信号
/dev/poll一种用于Solaris 77 11/99+,HP/UX 11.22+,IRIX 6.5.15+和TRU64 UNIX5.1A+系统的高效模型
Eventport用于Solaris 10的一种高效模型,但需要安全补丁
worker_connections语法:
worker_connections
定义一个worker进程能够同时连接的数量

Configuration模块

nginx的configuration模块是一个简单的模块,它提供的include指令能将其他文件包含在nginx的配置文件中,在配置文件的任何地方都可以使用该指令,并且后面只有一个参数–文件路径。
注意:文件路径若使用相对路径是相对于配置文件所在目录而言的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值