1. Nginx 配置文件结构
Nginx 的主配置文件是 nginx.conf,通常位于 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf。该文件由以下几个主要部分组成:
1.1、全局块
什么是全局块?
全局块是 Nginx 配置文件 nginx.conf 中最外层的一组指令,位于文件开头到 events 块之间。这些指令影响 Nginx 服务器的整体运行,例如指定运行 Nginx 进程的用户、设置 worker 进程的数量、定义错误日志等。
全局块中常用的指令:
-
user: 指定运行 Nginx worker 进程的用户和用户组。默认情况下,Nginx worker 进程以nobody用户运行。为了安全起见,建议创建一个专门的用户和用户组来运行 Nginx。- 语法:
user user [group]; - 示例:
user nginx nginx;(使用 nginx 用户和 nginx 用户组)
- 语法:
-
worker_processes: 设置 worker 进程的数量。通常设置为 CPU 核心数,以充分利用多核 CPU 的性能。如果设置为auto,Nginx 会自动检测 CPU 核心数。- 语法:
worker_processes number | auto; - 示例:
worker_processes 4;(使用 4 个 worker 进程) - 示例:
worker_processes auto;(自动检测 CPU 核心数)
- 语法:
-
pid: 指定 Nginx 主进程的 PID 文件的存放路径。PID 文件用于存储 Nginx 主进程的进程 ID,方便管理和控制 Nginx。- 语法:
pid path; - 示例:
pid /var/run/nginx.pid;
- 语法:
-
error_log: 指定错误日志的存放路径和日志级别。错误日志记录了 Nginx 运行过程中出现的错误和警告信息,对于排查问题非常重要。- 语法:
error_log path level; - 级别:
debug、info、notice、warn、error、crit、alert、emerg,级别越高,记录的信息越少。 - 示例:
error_log /var/log/nginx/error.log error;
- 语法:
-
worker_rlimit_nofile: 设置 worker 进程可以打开的最大文件描述符数量。这对于高并发的服务器非常重要,可以避免 "Too many open files" 错误。- 语法:
worker_rlimit_nofile number; - 示例:
worker_rlimit_nofile 65535;
- 语法:
-
worker_rlimit_core: 设置 worker 进程的 core dump 文件大小限制。core dump 文件包含了程序崩溃时的内存状态,可以用于调试。- 语法:
worker_rlimit_core size; - 示例:
worker_rlimit_core 512M;
- 语法:
-
include: 用于包含其他配置文件,方便模块化管理。可以将不同的配置项放在不同的文件中,然后使用include指令将其包含到主配置文件中。- 语法:
include path; - 示例:
include /etc/nginx/conf.d/*.conf;(包含conf.d目录下所有以.conf结尾的文件)
- 语法:
-
daemon: 设置 Nginx 是否以守护进程方式运行。默认情况下,Nginx 以守护进程方式运行。- 语法:
daemon on | off; - 示例:
daemon off;(在前台运行 Nginx,通常用于调试)
- 语法:
全局块示例:
user nginx nginx; # 使用 nginx 用户和 nginx 用户组
worker_processes auto; # 自动检测 CPU 核心数
pid /var/run/nginx.pid; # PID 文件路径
error_log /var/log/nginx/error.log error; # 错误日志路径和级别
worker_rlimit_nofile 65535; # worker 进程最大文件描述符数量
worker_rlimit_core 0; # 关闭 core dump
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
# ... 其他 HTTP 配置 ...
}
示例解释:
- Nginx worker 进程以
nginx用户和nginx用户组运行。 - worker 进程数量根据 CPU 核心数自动调整。
- PID 文件保存在
/var/run/nginx.pid。 - 错误日志记录在
/var/log/nginx/error.log,日志级别为error。 - worker 进程最多可以打开 65535 个文件描述符。
- 关闭 core dump。
events块和http块中包含其他配置。
通过合理配置全局块中的指令,可以有效地管理和优化 Nginx 服务器的性能和安全性。
1.2、events 块
什么是 events 块?
events 块用于配置影响 Nginx 服务器或与用户的网络连接的指令。它位于全局块之后,http 块之前。events 块主要负责处理网络事件,例如客户端连接的接收、读写等操作。
events 块中常用的指令:
-
worker_connections: 设置每个 worker 进程可以处理的最大并发连接数。这是events块中最关键的指令之一。需要根据服务器的硬件资源和预期的并发量进行合理设置。- 语法:
worker_connections number; - 示例:
worker_connections 1024;(每个 worker 进程最多处理 1024 个连接)
- 语法:
-
use: 指定 Nginx 使用的事件驱动模型。不同的操作系统支持不同的事件驱动模型。- 语法:
use method; - 常用方法:
epoll:Linux 系统下性能最佳的事件驱动模型,也是 Nginx 在 Linux 下的默认选择。kqueue:FreeBSD 和 macOS 系统下性能较好的事件驱动模型。select和poll:传统的事件驱动模型,性能相对较差,通常在没有epoll或kqueue的情况下使用。rtsig: 实时信号,较少使用。/dev/poll: Solaris 系统使用。eventport: Solaris 10 以上版本使用。
- 示例:
use epoll;
- 语法:
-

最低0.47元/天 解锁文章
782

被折叠的 条评论
为什么被折叠?



