生产环境nginx.conf调优围绕连接承载能力、资源调度效率与请求处理稳定性三方面展开:需配置worker_processes auto、worker_cpu_affinity auto、worker_rlimit_nofile 65535,events块启用epoll、multi_accept on、accept_mutex off;tcp优化启用sendfile、tcp_nopush、tcp_nodelay;长连接设keepalive_timeout 30s、keepalive_requests 1000;缓冲与超时参数须按业务细化;安全头加always标志,日志含upstream_time等关键字段。

生产环境的 nginx.conf 调优不是堆参数,而是围绕“连接承载能力”“资源调度效率”和“请求处理稳定性”三件事展开。核心目标是让每个 worker 进程稳定扛住高并发、减少上下文切换、避免系统级瓶颈(如文件描述符耗尽、TIME-WAIT堆积、缓冲区溢出)。
进程与连接数配置
这是并发能力的底层基础,必须匹配硬件并联动系统限制:
- worker_processes auto; —— 让 Nginx 自动识别 CPU 核心数,不写死数字;8 核以上通常不再提升收益,也不建议超过 8
- worker_cpu_affinity auto; —— 自动绑定 worker 到对应 CPU 核,减少跨核调度开销
-
worker_rlimit_nofile 65535; —— 单个 worker 最大可打开文件数,必须 ≥
worker_connections,且需同步调大系统 ulimit(ulimit -n 65535) -
events { worker_connections 65535; use epoll; multi_accept on; accept_mutex off; } —— Linux 必用 epoll;
multi_accept on提升新连接接收吞吐;高并发场景下accept_mutex off可避免串行争抢(默认 on 适合低流量)
TCP 与长连接优化
直接影响网络传输效率和连接复用率:
- tcp_nodelay on; —— 关闭 Nagle 算法,小包(如 API 响应头)立即发,降低延迟
- tcp_nopush on; —— 启用 TCP_CORK,配合 sendfile 合并响应头与文件数据,减少包数量
- sendfile on; —— 开启零拷贝,读磁盘→内核缓冲→网卡,跳过用户空间,对静态资源尤其关键
- keepalive_timeout 30s; —— API 类服务设为 15–30s;纯静态站可设 600s;太长易积压 TIME-WAIT
- keepalive_requests 1000; —— 单连接最大请求数,避免连接长期空闲占用资源
缓冲与超时控制
防止因客户端慢、后端延迟或异常导致 worker 阻塞:
- client_header_buffer_size 4k; 和 large_client_header_buffers 4 4k; —— 防止带大量 Cookie 或自定义 Header 的请求触发 400 错误
-
client_max_body_size 100M; —— 按业务上传需求设置,避免大文件上传中断;建议放在
server或location块中按需启用 -
proxy_connect_timeout 5s;、proxy_send_timeout 10s;、proxy_read_timeout 30s; —— 反向代理场景必配,防止后端卡死拖垮 Nginx;长轮询或导出接口可单独延长
proxy_read_timeout - proxy_buffering on;、proxy_buffer_size 8k;、proxy_buffers 8 64k; —— 缓冲后端响应,避免阻塞 worker;缓冲区总大小 = buffer_size + buffers × buffer_size
安全与可观测性补充
不直接提升性能,但能规避漏洞、辅助问题定位:
- server_tokens off; —— 隐藏 Nginx 版本号,降低被针对性攻击风险
- add_header X-Frame-Options DENY;、add_header X-Content-Type-Options nosniff; —— 基础安全头
- log_format main '... $upstream_addr $upstream_status $request_time $upstream_response_time'; —— 在 access_log 中加入上游地址和耗时,快速区分是 Nginx 瓶颈还是后端慢
-
error_log /var/log/nginx/error.log warn; —— 生产环境日志级别设为
warn或error,避免 debug 日志刷爆磁盘











