详解Nginx 配置
一、Nginx 介绍
Nginx 是一款轻量级的 Web 服务器 / 反向代理服务器及电子邮件(IMAP/POP3)代理服务器。它由俄罗斯的程序设计师 Igor Sysoev 所开发,自 2004 年发布以来,凭借其高性能、低内存消耗、高并发处理能力等特点,迅速在 Web 服务器领域崭露头角。Nginx 可以高效地处理静态资源,如 HTML、CSS、JavaScript 文件和图片等,同时通过反向代理功能,将客户端请求转发到后端的应用服务器,实现负载均衡,提高整个系统的可用性和性能。它广泛应用于各类大型网站、高流量应用以及云服务平台等场景。
二、Nginx 配置基础
配置文件结构剖析
Nginx 的配置文件通常为nginx.conf,其结构清晰,主要由以下几个部分组成:全局块:从配置文件开始到events块之间的部分,用于设置一些影响 Nginx 全局运行的指令,如运行用户、工作进程数等。
1. events 块:
主要用于配置 Nginx 的网络连接相关的事件处理,如选择事件驱动模型、设置每个工作进程的最大连接数等。
2. http 块:
这是 Nginx 配置中最为核心的部分,用于配置 HTTP 服务器相关的参数,如文件类型映射、日志记录、gzip 压缩等。在http块中还可以包含多个server块。
3. server 块:
每个server块代表一个虚拟主机,用于配置特定网站或应用的相关参数,如监听端口、服务器名称、访问日志等。在server块中又可以包含多个location块。
4. location 块:
用于匹配特定的 URL 路径,并对其进行相应的配置,如设置根目录、代理转发等。
常用配置指令详解
1. 全局配置指令
- user:指定 Nginx 工作进程运行的用户和用户组,例如user nginx nginx;,以确保服务器的安全性。
- worker_processes:设置 Nginx 的工作进程数,一般建议设置为与服务器 CPU 核心数相同,以充分利用 CPU
资源,如worker_processes pid:指定 Nginx 进程 ID 文件的路径,方便管理和监控 Nginx 进程,如pid
/var/run/nginx.pid。 - error_log:设置错误日志的路径和级别,有助于排查服务器运行过程中出现的问题,如error_log
/var/log/nginx/error.log warn。
2. 事件配置指令
- use:选择 Nginx 的事件驱动模型,常见的有epoll(适用于 Linux 系统)、kqueue(适用于 FreeBSD 等系统)等,如use epoll;,以提高服务器的性能。
- worker_connections:设置每个工作进程能够处理的最大连接数,结合服务器性能和业务需求合理设置,如worker_connections 1024。
- accept_mutex:开启或关闭 Nginx 的 “接受锁”,防止多个工作进程同时接受新连接时可能出现的 “惊群” 现象,默认开启&#x