nginx代理提升吞吐性能需四层协同:代理模式(stream/http)精准匹配场景、缓冲机制(proxy_buffers等)按响应节奏配置、连接复用(upstream keepalive+http/1.1)降低建连开销、系统资源(内核参数+worker限制)全面对齐,缺一不可。

要让 Nginx 代理真正提升吞吐性能,不能只改几个配置项——它依赖于代理模式选择、缓冲机制设计、连接复用策略与系统资源协同四个层面的精准配合。默认配置在高并发或大响应场景下极易成为瓶颈,关键在于让数据流在内存中高速流转,避免磁盘落盘、连接反复重建和内核队列丢包。
按场景选对代理模块:stream vs http
TCP 层代理(如 Redis、MySQL、TLS 直通)和 HTTP 层代理(如 API、静态资源)优化路径完全不同:
-
stream 模块适用于不解析内容的纯转发:需重点调优 Linux 内核参数(
somaxconn、tcp_max_syn_backlog、ip_local_port_range),并匹配listen ... backlog=65535;禁用tcp_tw_recycle,启用tcp_tw_reuse加速短连接回收 -
http 模块处理带语义的请求:必须开启
proxy_http_version 1.1和upstream keepalive复用后端连接;关闭proxy_buffering off仅用于流式场景(如 SSE),否则会因阻塞导致吞吐骤降
缓冲区不是越大越好:合理分配 proxy_buffers
缓冲配置失当是吞吐下降最常见原因——过小会频繁落盘,过大则浪费内存并延迟释放:
-
proxy_buffer_size 128k:专存响应头,应略大于后端最大 Header(如含长 JWT 或自定义字段) -
proxy_buffers 8 128k:总容量 1MB,覆盖多数中大型响应;若常传 10MB 文件,可设为16 512k -
proxy_busy_buffers_size 256k:设为单 buffer 大小的 2 倍,确保发送中缓冲区不卡死上游读取 -
proxy_max_temp_file_size 0:禁用临时文件,前提是内存充足且后端稳定;否则宁可设为1024m避免 OOM
让连接“活”起来:长连接复用与超时协同
每次建连消耗约 3–5 个 RTT,尤其 TLS 握手开销显著。吞吐提升的关键是减少连接震荡:
- upstream 块中配
keepalive 64(数值 ≤ 后端连接池上限),location 中配proxy_set_header Connection ''清除客户端 close 指令 -
proxy_read_timeout 120:匹配最长响应时间(如大文件下载),避免传输中途断连 -
proxy_send_timeout 60:控制向客户端发送时的空闲容忍,防止慢客户端拖垮 worker - 用
ss -tnp | grep :backend_port观察 ESTABLISHED 连接是否稳定维持,而非瞬时飙升后归零
释放底层潜力:worker 与内核参数对齐
Nginx 配置再优,也会被系统限制卡住:
-
worker_processes auto+worker_cpu_affinity auto:充分利用多核,避免跨 NUMA 节点访问内存 -
worker_connections 16384+worker_rlimit_nofile 65536:单 worker 承载万级连接,需同步执行ulimit -n 65536 - 内核层
fs.file-max = 2097152、net.core.somaxconn = 65535、net.ipv4.tcp_rmem "4096 65536 8388608"必须与 Nginx 参数成比例匹配 - NUMA 架构服务器(如鲲鹏 920)建议启用
oeAware-manager的 numa_mem_access 插件,自动优化内存分配亲和性











