Nginx配置文件解析
Nginx 配置文件属性说明文档(基于官网 v1.27+)
数据来源:Alphabetical index of directives及各模块手册。 本文档覆盖 Nginx 配置文件中最常用的全部属性,按"模块 → 上下文"的官方组织方式编排。
0. 文档约定
- 上下文(Context):指令允许出现的配置块层级,从外到内依次是:
main(主上下文,即配置文件最外层)events、http、mail、stream(顶层模块块)server(虚拟主机)location(URI 路径匹配)if、limit_except、upstream、map等子上下文
- 每条指令格式:
Syntax | Default | Context | 说明
1. 配置文件总体结构
# main 上下文 user nginx; worker_processes auto; error_log logs/error.log notice; pid logs/nginx.pid; events { # events 上下文 worker_connections 1024; use epoll; } http { # http 上下文 include mime.types; default_type application/octet-stream; upstream backend { ... } # upstream 子上下文 server { # server(虚拟主机)上下文 listen 80; server_name example.com; location / { # location 子上下文 proxy_pass http://backend; } } } stream { ... } # 4 层 TCP/UDP 代理 mail { ... } # 邮件代理(很少用)继承规则:内层默认继承外层;但add_header、proxy_set_header、access_log等是"全部替换"语义——内层一旦写了任何一条,外层的全部失效,需要显式重写。
2. Core 模块(ngx_core_module—— main 上下文)
指令 | 语法 / 默认 / 上下文 | 说明 |
|
| Worker 进程运行身份。容器中常为 |
|
| Worker 进程数。 |
|
| 把 worker 绑定到指定 CPU 核心,降低上下文切换。 |
|
| Worker 进程 nice 优先级。 |
|
| 单 worker 可打开文件描述符上限。建议 ≥ |
|
| 优雅关闭最长等待时间。 |
|
| 错误日志路径与级别。级别由低到高: |
|
| 主进程 PID 文件位置。 |
|
| 是否以守护进程方式运行。容器内常设 |
|
| 是否启用 master/worker 模型(调试用)。 |
|
| 保留/设置传给 worker 的环境变量。 |
|
| 引入外部配置。例: |
|
| 动态加载模块。 |
|
| 启用 PCRE JIT,显著加速正则匹配。 |
|
| 异步 I/O 线程池,配合 |
|
| 内部时间缓存刷新粒度,减少 |
|
| 硬件 SSL 加速器名称。 |
|
| core dump 输出目录。 |
3. Events 模块(events { ... })
指令 | 默认 / 上下文 | 说明 |
|
| 单 worker 最大并发连接。最大并发 ≈ workers × 此值。 |
| 自动 /events | 事件驱动: |
|
| 一次 accept 多个连接。kqueue 下被忽略。 |
|
| 多 worker 顺序 accept,避免惊群。支持 |
|
| 上一指令开启后的 accept 重试延迟。 |
| — /events | 仅对指定客户端记录 debug 日志(需 |
4. HTTP 核心模块(ngx_http_core_module)
4.1 http 上下文常用指令
指令 | 默认 / 上下文 | 说明 |
| — /main | HTTP 服务总入口。 |
| — /http, upstream | 定义虚拟主机或上游成员。 |
|
| 未匹配 mime 类型时的兜底。 |
| 见 | 后缀 → MIME 映射。 |
|
| 长连接保持时间。 |
|
| 单条长连接最多服务多少请求。 |
|
| 禁用部分 UA 的 keep-alive。 |
|
| 启用零拷贝静态文件下发。 |
|
| 配合 sendfile,合并小包。 |
|
| 长连接下尽快发小包。 |
| 8k/16k / http, server, location | 请求体内存缓冲区。 |
|
| 请求体临时目录。 |
|
| 读取请求体两次操作之间的最大间隔。 |
|
| 请求行+请求头初始缓冲。 |
|
| 读完整个请求头的超时。 |
|
| 允许的最大请求体,超出返回 413。 |
|
| 大请求头的额外缓冲。 |
|
| 向客户端写两次操作之间的最大间隔。 |
|
| 超时直接 RST 连接。 |
|
| 是否暴露 nginx 版本号。 |
|
| 是否合并 URI 中重复 |
|
| 允许请求头名含下划线。 |
|
| 是否忽略不合法的请求头。 |
|
| 是否允许响应使用 chunked 编码。 |
|
| 是否对静态资源生成 ETag。 |
|
| 处理条件请求的方式。 |
|
| 大文件绕过页缓存直接 I/O。 |
|
| 异步 I/O 启用。 |
|
| 磁盘读文件输出缓冲。 |
4.2 server 块常用指令
指令 | 默认 / 上下文 | 说明 |
|
| 监听端口。参数: |
|
| 虚拟主机名,支持精确、通配 |
|
| 重定向时使用 server_name 还是 Host。 |
|
| 重定向 URL 中是否带端口。 |
|
| 重定向使用绝对 URL 还是相对。 |
|
| 静态资源根目录。最终路径 = |
| — /location | 替换 location 前缀后的路径。与 root 拼接语义不同。 |
|
| 目录的默认索引文件。 |
< |
