Nginx 详解 Part1 — 安装/命令/配置结构/IO模型/优化参数/日志
来源:
raw/day41 nginx详解part1.md— 林海峰 Nginx 课程第一部分 主题:Nginx 核心特点、安装方式(yum vs 源码编译)、配置文件结构、epoll 网络 IO 模型、HTTP 性能优化参数、server 虚拟主机、location 匹配规则、访问日志与错误日志
结构总览
Nginx 特点与用途
安装方式(yum vs 源码编译)
文件分布
常用命令与平滑升级
配置结构(main/events/http/stream/server/location/upstream)
Events 配置与网络 IO 模型
├─ select / poll / epoll 对比
└─ 并发量计算 worker_processes × worker_connections
HTTP 核心优化参数
├─ sendfile(零拷贝)
├─ tcp_nopush / tcp_nodelay
├─ keepalive_timeout
├─ open_file_cache
└─ gzip 压缩
Server 虚拟主机配置
Location 匹配规则
日志配置(log_format / access_log / error_log / logrotate)
关键要点
Yum 安装 vs 源码编译安装:
| 对比项 | Yum 安装 | 源码安装 |
|---|---|---|
| 速度 | 快 | 慢(需编译) |
| 定制化 | 有限 | 可定制编译参数 |
| 文件位置 | 分散在系统目录 | 集中在指定目录 |
| 适用场景 | 快速部署、测试 | 生产环境、定制需求 |
网络 IO 模型: Nginx 采用 epoll 异步非阻塞事件驱动模型,每个 IO 绑定回调事件,数据到达时主动触发通知,避免遍历所有连接。select 遍历所有连接效率随连接数增长而下降。并发量上限 = worker_processes × worker_connections。
sendfile 零拷贝: 传统方式(硬盘→内核→用户态→内核→网卡)vs sendfile(硬盘→内核→网卡),绕过用户态减少拷贝次数。
日志配置: log_format 自定义格式(main/combined/json 等),access_log 指定路径/格式/缓冲区,error_log 控制日志级别(emerg→debug),通过 logrotate 实现日志轮转。