好多同学对nginx服务的详细的配置不是很清楚,今天这篇文章帮助大家理解并掌握nginx的配置Nginx配置文件的整体结构从图中可以看出主要包含以下几大部分内容:1. 全局块该部分配置主要影响Nginx全局,通常包括下面几个部分:2. events块该部分配置主要影响Nginx服务器与用户的网络连接,主要包括:3. http块4. server块5. location块一份配置清单例析笔者按照文章:《Nginx服务器初体验》中的实验,给出了一份简要的清单配置举例:配置代码如下:接下来就来详细剖析以下配置文件中各个指令的含义⬇️配置运行Nginx服务器用户(组)指令格式:user user[group];如果user指令不配置或者配置为user nobody nobody ,则默认所有用户都可以启动Nginx进程worker process数配置Nginx服务器实现并发处理服务的关键,指令格式:worker_processes number|auto;按照上文中的配置清单的实验,我们给worker_processes配置的数目是:3,启动Nginx服务器后,我们可以后台看一下主机上的Nginx进程情况:很明显,理解worker_processes 这个指令的含义就很容易了Nginx进程PID存放路径Nginx进程是作为系统守护进程在运行,需要在某文件中保存当前运行程序的主进程号,Nginx支持该保存文件路径的自定义指令格式:pid file;- 如果不指定默认置于路径logs/nginx.pid错误日志的存放路径指定格式:error_log file|stderr;配置文件的引入指令格式:include file;设置网络连接的序列化指令格式:accept_mutex on|off;说到该指令,首先得阐述一下什么是所谓的“惊群问题”,可以参考 WIKI百科的解释。就Nginx的场景来解释的话大致的意思就是:当一个新网络连接来到时,多个worker进程会被同时唤醒,但仅仅只有一个进程可以真正获得连接并处理之。如果每次唤醒的进程数目过多的话,其实是会影响一部分性能的。所以在这里,如果acceptmutex on,那么多个worker将是以串行方式来处理,其中有一个worker会被唤醒;反之若acceptmutex off,那么所有的worker都会被唤醒,不过只有一个worker能获取新连接,其它的worker会重新进入休眠状态这个值的开关与否其实是要和具体场景挂钩的。是否允许同时接收多个网络连接指令格式:multi_accept on|off;事件驱动模型的选择指令格式:usemodel;最大连接数的配置指令格式:worker_connections number;定义MIME-Type指令格式:cat mime.types 来查看mime.types文件内容,我们发现其就是一个types结构,里面包含了各种浏览器能够识别的MIME类型以及对应类型的文件后缀名字,如下所示:自定义服务日志指令格式:允许sendfile方式传输文件指令格式:连接超时时间配置指令格式:keepalive_timeout timeout[header_timeout];单连接请求数上限指令格式:keepalive_requests number;配置网络监听指令格式:实际举例:基于名称和IP的虚拟主机配置指令格式:server_name name1 name2...实际举例:此时表示该虚拟主机可以接收类似域名 www1.myserver.com 等的请求而拒绝 myserver.com 的域名请求,所以说用正则表达式可以实现更精准的控制至于基于IP的虚拟主机配置比较简单,不再太赘述:指令格式:server_name IP地址location配置指令格式为:location[=|~|~*|^~]uri{...}uri前面的方括号中的内容是可选项,解释如下:请求根目录配置指令格式:root path;当然,还可以通过alias指令来更改location接收到的URI请求路径,指令为:设置网站的默认首页指令格式:index file......