nginx调优核心是缩短请求路径:精简location匹配与rewrite、启用sendfile和open_file_cache、合理配置keepalive、开启proxy_buffering并调优缓冲区。

缩短请求路径是 Nginx 调优最直接有效的切入点。核心不是堆参数,而是减少中间环节、避免等待、复用已有连接、让数据走更快的通路。
精简请求处理链路
每个 location 匹配、rewrite 规则、if 判断都会增加解析开销。高频路径应尽量扁平化:
- 用精确匹配 location = /api/login 替代正则匹配,跳过全量遍历
- 避免在 location 内嵌套多层 if(Nginx 官方明确不推荐),改用 map 指令预计算变量
- 静态资源路径单独剥离,直连磁盘或缓存,不经过 proxy_pass
加速文件交付路径
静态内容占多数请求,交付效率直接影响首字节时间(TTFB):
- 启用 sendfile on,让内核直接在文件描述符间拷贝,绕过用户态内存复制
- 搭配 tcp_nopush on,确保 sendfile 发送的数据包满载再发,减少小包数量
- 开启 open_file_cache 缓存文件元信息(如 inode、权限、存在性),尤其适合大量小文件场景
控制连接生命周期降低延迟
频繁建连/断连是 TTFB 和吞吐量的主要拖累:
- 客户端侧:设置 keepalive_timeout 300(单位秒),配合前端复用连接
- 服务端侧:反向代理时配置 proxy_http_version 1.1 和 proxy_set_header Connection "",保持与后端长连接
- 限制单连接请求数:keepalive_requests 1000,防止单连接长期占用资源
前置响应与缓冲协同
让响应尽早发出,减少等待后端的时间感知:
- 开启 proxy_buffering on,Nginx 可边收边发,不必等后端完全返回才开始传输
- 调大 proxy_buffer_size(如 128k)和 proxy_buffers,避免小缓冲导致频繁 flush
- 对小响应体(如 JSON API),可设 proxy_buffering off + proxy_http_version 1.1,实现流式响应











