干货分享| nginx 常用指令配置总结

高手们,打扰一下,干货分享| nginx 常用指令配置总结
最新回答
追逐明天

2024-09-09 11:53:50

熟悉nginx的同学应该了解,nginx.conf配置文件中默认有三大块:全局块、events块、http块,http块中可以配置多个server块,每个server块又可以配置多个location块。

本篇对nginx.conf配置文件中的常用指令块做一个较详细的介绍。

全局块

1、user指令

user: 用于配置运行Nginx服务器的worker进程的用户和用户组

该属性也可以在编译的时候指定,语法如下 ./configure -- user=user --group=group,如果两个地方都进行了设置,最终生效的是配置文件中的配置。

指令使用目的

使用user指令可以指定启动运行工作进程的用户及用户组,这样对于系统的权限访问控制更加精细,也更加安全。

2、work process指令

正常情况下,当开启nginx服务后,使用ps命令可以看到当前有两个进程

如果将worker_processes设置成2,则会看到如下内容:

3、daemon指令

设定Nginx是否以守护进程的方式启动

守护式进程是Linux后台执行的一种服务进程,特点是独立于控制终端,不会随着终端关闭而停止。

4、pid指令

用来配置Nginx当前master进程的进程号ID存储的文件路径。

该属性可以通过./configure -- pid-path=PATH来指定

5、error_log

用来配置Nginx的错误日志存放路径

该属性可以通过./configure -- error-log-path=PATH来指定

其中日志级别的值有:debug|info|notice|warn|error|crit|alert|emerg,翻译过来为调试 | 信息 | 通知 | 警告 | 错误 | 临界 | 警报 | 紧急,建议大家设置的时不要设置成info以下等级,会带来大量的磁盘I/O消耗,影响Nginx性能;

6、include

用来引入其他配置文件,使Nginx的配置更加灵活

events块

events块中可配置的指令包括如下,分别做说明

1、accept_mutex

用来设置Nginx网络连接序列化

这个配置主要可以用来解决常说的"惊群"问题。大致意思是在某一个时刻,客户端发来一个请求连接,Nginx后台是以多进程的工作模式,也就是说有多个worker进程会被同时唤醒,但是最终只会有一个进程可以获取到连接,如果每次唤醒的进程数目太多,就会影响Nginx的整体性能。如果将上述值设置为on(开启状态),将会对多个Nginx进程接收连接进行序列号,一个个来唤醒接收,就防止了多个进程对连接的争抢;

2、multi_accept

用来设置是否允许同时接收多个网络连接

如果multi_accept被禁止了,nginx一个工作进程只能同时接受一个新的连接。否则,一个工作进程可以同时接受所有的新连接;

3、worker_connections

用来配置单个worker进程最大的连接数

这里的连接数不仅仅包括和前端用户建立的连接数,而是包括所有可能的连接数。另外,number值不能大于操作系统支持打开的最大文件句柄数量。

4、user

用来设置Nginx服务器选择哪种事件驱动来处理网络消息

注意:此处所选择事件处理模型是Nginx优化部分的一个重要内容,method的可选值有select/poll/epoll/kqueue等,之前在准备centos环境的时候,我们强调过要使用Linux内核在2.6以上,就是为了能使用epoll函数来优化Nginx。

另外下面这些值也可以在编译的时候选择使用:

--with-select_module、--without-select_module、--with-poll_module、--without-poll_module来设置是否需要将对应的事件驱动模块编译到Nginx的内核;

events指令配置实例

http块

http模块是nginx.conf配置文件中最重要的部分,日常开发中最重要的配置几乎都是在这个模块中进行的;

1、定义MIME-Type

我们都知道浏览器中可以显示的内容有HTML、XML、GIF等种类繁多的文件、媒体等资源,浏览器为了区分这些资源,就需要使用MIME Type。所以说MIME Type是网络资源的媒体类型。Nginx作为web服务器,也需要能够识别前端请求的资源类型;

在Nginx的配置文件中,默认有两行配置

include mime.types; default_type application/octet-stream;

default_type

用来配置Nginx响应前端请求默认的MIME类型。

在default_type之前还有一句include mime.types,include之前我们已经介绍过,相当于把mime.types文件中MIMT类型与相关类型文件的文件后缀名的对应关系加入到当前的配置文件中;

举例说明:

有些时候请求某些接口的时候需要返回指定的文本字符串或者json字符串,如果逻辑非常简单或者干脆是固定的字符串,那么可以使用nginx快速实现,这样就不用编写程序响应请求了,可以减少服务器资源占用并且响应性能非常快。

配置实现如下:

配置完毕后,重启nginx,浏览器分别访问上面两个路径,均能满足预期的效果

2、自定义服务日志

Nginx中日志的类型分access.log、error.log

Nginx服务器支持对服务日志的格式、大小、输出等进行设置,需要使用到两个指令,分别是access_log和log_format指令。

access_log

用来设置用户访问日志的相关属性

log_format

用来指定日志的输出格式

其他配置指令

1、sendfile

用来设置Nginx服务器是否使用sendfile()传输文件,该属性可以大大提高Nginx处理静态资源的性能

2、keepalive_timeout

用来设置长连接的超时时间

3、keepalive_requests

用来设置一个keep-alive连接使用的次数

补充说明:为什么要使用keepalive?

————————————————

版权声明:本文为CSDN博主「逆风飞翔的小叔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:nginx常用指令配置总结_逆风飞翔的小叔的博客-CSDN博客(侵删)