从一份配置清单详解Nginx服务器配置

是这样的,想请讲解下,从一份配置清单详解Nginx服务器配置
最新回答
搖到月亮灣

2024-10-12 12:14:01

好多同学对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......