Nginx.conf配置文件分为3个部分,分别是全局块、events块和http块,其中http块又分为http全局块和server块,每个server块中可以包含多个location块和server全局块,如下图所示:
模块配置详解
- 全局块
全局块是默认配置文件从开始到events块之间的内容。主要设置nginx整体运行的配置指令,这些指令的作用域是全局。通常包括配置运行Nginx服务器的用户(组)、允许生成的worker process数、Nginx进程PID存放路径、日志的存放路径和类型以及配置文件引入等。
# Nginx worker进程运行的用户及用户组,决定了进程的权限,默认是nobody,可以设置为root
user nobody;
# Nginx worker进程个数:其数量直接影响性能,建议设置为等于CPU总核心数,每个worker进程都是单线程的进程,他们会调用各个模块以实现多种多样的功能。如果这些模块不会出现阻塞式的调用,那么,有多少CPU内核就应该配置多少个进程,反之,有可能出现阻塞式调用,那么,需要配置稍多一些的worker进程
worker_processes 8;
# error_log全局错误日志位置及定义类型,日志级别[ debug | info | notice | warn | error | crit ]
error_log /usr/local/nginx/logs/error.log info;
# pid文件(master进程ID的pid文件存放路径)的路径
pid /usr/local/nginx/logs/nginx.pid;
#nginx进程打开的最多文件描述符数目,如linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。
worker_rlimit_nofile 65535;
常用得全局模块
user nobody;
worker_processes auto;
error_log /usr/local/nginx/logs/error.log notice;
pid /usr/local/nginx/logs/nginx.pid;
events块
events块涉及的指令主要影响Nginx服务器与用户的网络连接,对性能影响较大。常用到的设置包括是否开启对多worker process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型处理连接请求,每个worker process可以同时支持的最大连接数等。
events
{
# use得参考事件模型,有以下类型[ kqueue | rtsig | epoll | /dev/poll | select | poll ];
# Epoll:使用于Linux内核2.6版本及以后的系统。
# Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll
# Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.
# dev