news 2026/7/1 13:32:12

Nginx配置文件解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nginx配置文件解析

Nginx 配置文件属性说明文档(基于官网 v1.27+)

数据来源:Alphabetical index of directives及各模块手册。 本文档覆盖 Nginx 配置文件中最常用的全部属性,按"模块 → 上下文"的官方组织方式编排。


0. 文档约定

  • 上下文(Context):指令允许出现的配置块层级,从外到内依次是:
    • main(主上下文,即配置文件最外层)
    • eventshttpmailstream(顶层模块块)
    • server(虚拟主机)
    • location(URI 路径匹配)
    • iflimit_exceptupstreammap等子上下文
  • 每条指令格式: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_headerproxy_set_headeraccess_log等是"全部替换"语义——内层一旦写了任何一条,外层的全部失效,需要显式重写。


2. Core 模块(ngx_core_module—— main 上下文)

指令

语法 / 默认 / 上下文

说明

user

user user [group];/nobody nobody/main

Worker 进程运行身份。容器中常为nginx。Master 仍以 root 启动以便 bind 低端口。

worker_processes

worker_processes number | auto;/1/main

Worker 进程数。auto= CPU 核心数,生产推荐。

worker_cpu_affinity

auto [cpumask];/ — /main

把 worker 绑定到指定 CPU 核心,降低上下文切换。

worker_priority

-20..20/0/main

Worker 进程 nice 优先级。

worker_rlimit_nofile

worker_rlimit_nofile number;/ — /main

单 worker 可打开文件描述符上限。建议 ≥worker_connections

worker_shutdown_timeout

time/ — /main(1.11.11+)

优雅关闭最长等待时间。

error_log

error_log file [level] [json];/logs/error.log error/main, http, mail, stream, server, location

错误日志路径与级别。级别由低到高:debug < info < notice < warn < error < crit < alert < emerg。容器化可用stderr写到标准错误。

pid

pid file;/logs/nginx.pid/main

主进程 PID 文件位置。

daemon

on | off;/on/main

是否以守护进程方式运行。容器内常设off

master_process

on | off;/on/main

是否启用 master/worker 模型(调试用)。

env

env VAR[=VALUE];/env TZ;/main

保留/设置传给 worker 的环境变量。

include

include file | mask;/ — /任意上下文

引入外部配置。例:include conf.d/*.conf;

load_module

load_module file;/ — /main(1.9.11+)

动态加载模块。

pcre_jit

on | off;/off/main

启用 PCRE JIT,显著加速正则匹配。

thread_pool

name threads=N [max_queue=N];/default threads=32 max_queue=65536/main

异步 I/O 线程池,配合aio threads;

timer_resolution

interval/ — /main

内部时间缓存刷新粒度,减少gettimeofday调用。

ssl_engine

device/ — /main

硬件 SSL 加速器名称。

working_directory

directory/ — /main

core dump 输出目录。


3. Events 模块(events { ... })

指令

默认 / 上下文

说明

worker_connections number;

512/events

单 worker 最大并发连接。最大并发 ≈ workers × 此值

use method;

自动 /events

事件驱动:epoll(Linux)、kqueue(BSD/macOS)、eventport/dev/pollselectpoll

multi_accept on | off;

off/events

一次 accept 多个连接。kqueue 下被忽略。

accept_mutex on | off;

off(1.11.3+) /events

多 worker 顺序 accept,避免惊群。支持EPOLLEXCLUSIVEreuseport时无需开。

accept_mutex_delay time;

500ms/events

上一指令开启后的 accept 重试延迟。

debug_connection address | CIDR;

— /events

仅对指定客户端记录 debug 日志(需--with-debug编译)。


4. HTTP 核心模块(ngx_http_core_module)

4.1 http 上下文常用指令

指令

默认 / 上下文

说明

http { ... }

— /main

HTTP 服务总入口。

server { ... }

— /http, upstream

定义虚拟主机或上游成员。

default_type mime-type;

text/plain/ http, server, location

未匹配 mime 类型时的兜底。

types { ... }

mime.types/ http, server, location

后缀 → MIME 映射。

keepalive_timeout time [header];

75s/ http, server, location

长连接保持时间。

keepalive_requests number;

1000(1.19.10+) / http, server, location

单条长连接最多服务多少请求。

keepalive_disable none | browser;

msie6/ http, server, location

禁用部分 UA 的 keep-alive。

sendfile on | off;

off/ http, server, location

启用零拷贝静态文件下发。

tcp_nopush on | off;

off/ http, server, location

配合 sendfile,合并小包。

tcp_nodelay on | off;

on/ http, server, location

长连接下尽快发小包。

client_body_buffer_size size;

8k/16k / http, server, location

请求体内存缓冲区。

client_body_temp_path path ...;

client_body_temp/ http, server, location

请求体临时目录。

client_body_timeout time;

60s/ http, server, location

读取请求体两次操作之间的最大间隔。

client_header_buffer_size size;

1k/ http, server

请求行+请求头初始缓冲。

client_header_timeout time;

60s/ http, server

读完整个请求头的超时。

client_max_body_size size;

1m/ http, server, location

允许的最大请求体,超出返回 413

large_client_header_buffers N size;

4 8k/ http, server

大请求头的额外缓冲。

send_timeout time;

60s/ http, server, location

向客户端写两次操作之间的最大间隔。

reset_timedout_connection on | off;

off/ http, server, location

超时直接 RST 连接。

server_tokens on | off | build | string;

on/ http, server, location

是否暴露 nginx 版本号。

merge_slashes on | off;

on/ http, server

是否合并 URI 中重复/

underscores_in_headers on | off;

off/ http, server

允许请求头名含下划线。

ignore_invalid_headers on | off;

on/ http, server

是否忽略不合法的请求头。

chunked_transfer_encoding on | off;

on/ http, server, location

是否允许响应使用 chunked 编码。

etag on | off;

on/ http, server, location

是否对静态资源生成 ETag。

if_modified_since off | exact | before;

exact/ http, server, location

处理条件请求的方式。

directio size | off;

off/ http, server, location

大文件绕过页缓存直接 I/O。

aio on | off | threads[=pool];

off/ http, server, location

异步 I/O 启用。

output_buffers N size;

2 32k/ http, server, location

磁盘读文件输出缓冲。

4.2 server 块常用指令

指令

默认 / 上下文

说明

listen address[:port] [...];

*:80/server

监听端口。参数:default_serversslhttp2http3reuseportproxy_protocolbacklog=N

server_name name ...;

""/server

虚拟主机名,支持精确、通配*.x.com、正则~^...$、特殊值_

server_name_in_redirect on | off;

off/ http, server, location

重定向时使用 server_name 还是 Host。

port_in_redirect on | off;

on/ http, server, location

重定向 URL 中是否带端口。

absolute_redirect on | off;

on/ http, server, location

重定向使用绝对 URL 还是相对。

root path;

html/ http, server, location, if

静态资源根目录。最终路径 =root+URI

alias path;

— /location

替换 location 前缀后的路径。与 root 拼接语义不同。

index file ...;

index.html/ http, server, location

目录的默认索引文件。

<

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 13:31:38

LV3296与TM4C129XNCZAD构建工业数据采集系统

1. 项目概述&#xff1a;LV3296与TM4C129XNCZAD的协同工作场景在工业自动化和嵌入式系统开发领域&#xff0c;数据采集与处理的实时性要求越来越高。LV3296作为一款高性能信号调理芯片&#xff0c;与TI的TM4C129XNCZAD微控制器组合&#xff0c;能够构建稳定可靠的数据采集系统。…

作者头像 李华
网站建设 2026/7/1 13:29:57

爱普生打印机废墨计数器清零原理与L4168实操指南

1. 项目概述&#xff1a;爱普生L4168打印机清零的来龙去脉如果你手头有一台爱普生L4168打印机&#xff0c;用了一段时间后&#xff0c;突然发现电源灯和墨水灯交替闪烁&#xff0c;屏幕上可能还提示“废墨收集垫已到使用寿命”&#xff0c;那恭喜你&#xff0c;你遇到了几乎所有…

作者头像 李华
网站建设 2026/7/1 13:27:54

STM32H750XB与PCF8591的I2C信号采集方案详解

1. 项目概述&#xff1a;PCF8591与STM32H750XB的协同信号处理方案在嵌入式系统开发中&#xff0c;模拟信号与数字信号的相互转换是核心需求之一。PCF8591作为一款经典的8位ADC/DAC转换芯片&#xff0c;以其低廉的价格和简单的I2C接口在各类传感器信号采集场景中广泛应用。而STM…

作者头像 李华
网站建设 2026/7/1 13:23:28

XSS攻击实战解析:从原理到防御的纵深安全体系构建

1. 项目概述&#xff1a;从“弹窗”到“数据窃取”&#xff0c;XSS攻击的实战威胁在网络安全领域&#xff0c;跨站脚本攻击&#xff08;Cross-Site Scripting&#xff0c; XSS&#xff09;绝对算得上是一个“老演员”&#xff0c;但它的戏路却越来越宽&#xff0c;危害也从未减…

作者头像 李华
网站建设 2026/7/1 13:23:22

零成本抽象遇上推理加速:用 Rust 构建高性能 AI 推理引擎

零成本抽象遇上推理加速&#xff1a;用 Rust 构建高性能 AI 推理引擎一、推理延迟的毫秒战争&#xff1a;为什么 AI 推理引擎需要系统级语言 AI 模型从训练走向部署&#xff0c;推理阶段的性能直接决定用户体验与成本结构。一个 GPT 类大模型在 Python 运行时中单次推理可能消耗…

作者头像 李华
网站建设 2026/7/1 13:18:25

Python 初学者练手项目集合,78 个脚本覆盖常见场景

文章目录Python 初学者练手项目集合&#xff0c;78 个脚本覆盖常见场景Python 初学者练手项目集合&#xff0c;78 个脚本覆盖常见场景 GitHub 上有一个 Python 项目脚本合集&#xff0c;专门面向编程初学者&#xff0c;目前获得了 2.2k 的 Star。 这个项目叫 Python-project-S…

作者头像 李华