目录
2.2.1 accept_mutex,设置Nginx网络连接序列化
2.2.2 multi_accept,用来设置是否允许同时接收多个网络连接
2.2.3 worker_connections:用来配置单个worker进程最大的连接数
2.2.4 use:用来设置Nginx服务器选择哪种事件驱动来处理网络消息
一、 全局块
1.1 概况
全局模块主要是用于配置关于master和work进程相关内容,以及nginx的用户(权限)、日志等。
1.2 nginx用户权限
1.2.1 user
值 | 释义 |
username | 用于配置nginx用户;eg: user nobody; |
注意: ① 默认值为 nobody。
② 配置静态文件等情况,有无法访问的时候,需要查看文件权限及其所属用户信息。
1.3 master及其works进程控制
1.3.1 master_process:
值 | 释义 |
on | 开启master进程(默认值) eg: master_process on; |
off | 关闭master进程,此时将只有一个nginx进程进行服务提供 |
注意: ①默认开启master进程。
②关闭后,不在有master进程和worker进程区别,只有一条进程进行服务提供。
1.3.2 worker_processes
值 | 释义 |
number | worker进程数量: eg: worker_processes 1; |
注意:① 只有master_process on;开启时才会生效
② 默认值为1,值大小需要具体情况具体分析,但是一般设置为cpu处理核数量。
1.4 其他控制
1.4.1 daemon
设定Nginx是否以守护进程的方式启动,不会随着终端关闭而停止。
值 | 释义 |
on | 开启守护进程 (默认值) eg: daemon: on; |
off | 关闭守护进程。eg: daemon: off; |
1.4.2 access_log
值 | 释义 |
filePath | 指定access_log文件路径 eg: access_log: logs/access.log |
注意: ① 上文用了相对路径,即相对于prefix路径(/usr/local/nginx)
② 这个配置既可以作为全局配置,也可以为server、location单独配置
1.4.3 error_log
值 | 释义 |
filePath | 指定error_log文件路径 eg: error_log: logs/error.log |
注意: ① 上文用了相对路径,即相对于prefix路径(/usr/local/nginx)
② 这个配置既可以作为全局配置,也可以为server、location单独配置
1.4.4 include
值 | 释义 |
filePath | 指定其他模块的conf文件,eg: include: other/*.conf |
注意:
① 当nginx要配置多个模块的时候,比如多个service,那么为了方便模块管控,一个service可以使用一个conf文件进行配置
② 可以使用*.conf进行通配匹配,我们一般会将这些放到一个我们定制的目录之中
二、events模块
2.1 简介
主要用于配置nginx处理请求时的相关配置
2.2 配置
2.2.1 accept_mutex,设置Nginx网络连接序列化
值 | 释义 |
filePath | 指定其他模块的conf文件,eg: include: other/*.conf |
开启该选项表示所有worker进程轮流的接受新的请求。默认情况下,一旦有新的请求都会通知所有的worker进程。如果新连接的数量较低,那所有请求都会通知一遍worker进程,造成系统资源浪费。
建议开启,以免引起惊群效应
2.2.2 multi_accept,用来设置是否允许同时接收多个网络连接
值 | 释义 |
on | 开启 eg: multi_accept: on; |
off | 关闭 (默认值)。eg: multi_accept: off; |
如果multi_accept被禁止了,nginx一个工作进程只能同时接受一个新的连接。否则,一个工作进程可以同时接受所有的新连接。
建议开启,否则效率太低了
2.2.3 worker_connections:用来配置单个worker进程最大的连接数
值 | 释义 |
number | eg: worker_connections: 512 (默认值) |
这里的连接数不仅仅包括和前端用户建立的连接数,而是包括所有可能的连接数。另外,number值不能大于操作系统支持打开的最大文件句柄数量。
2.2.4 use:用来设置Nginx服务器选择哪种事件驱动来处理网络消息
值 | 释义 |
method | eg: use: epoll (默认值:系统方案) |
注意:① 一般有 select、poll、epoll三种方案,默认为系统方案
② 建议使用epoll
三、关于epoll介绍
3.1 select 、poll、epoll对比
select和poll都是直接使用linux内核的文件集,但是select有所限制,poll没有限制,故poll比select会高效一些。
epoll方式则是,linux内核会创建一个epoll文件集的红黑树,其单独的空间检索更为快速,处理也就更快,且没有限制,故为高效。
具体详见搞懂Select,Poll,Epoll的区别-IT乾坤技术博客
参考资料: 1. 黑马程序员介绍
2. 博客:搞懂Select,Poll,Epoll的区别-IT乾坤技术博客
上一节:Nginx简介及其基本结构 01
下一节: nginx信号控制 03