Nginx装好就能用,但默认配置远没发挥出它的实力。同一台服务器,调优前后的并发能力和响应速度可能差出一大截。本文给出Nginx性能调优的关键参数和配置,让你的网站又快又能扛。
一、worker进程与连接数(基础中的基础)
这是最核心的两个参数,在 nginx.conf 顶部:
worker_processes auto; # 自动设为CPU核心数
events {
worker_connections 4096; # 每个worker的最大连接数
use epoll; # Linux下用高效的epoll事件模型
}
worker_processes auto 让Nginx按CPU核心数开进程,充分利用多核。worker_connections 决定单进程能处理的并发连接,理论最大并发 ≈ worker数 × 该值。物理核心越多、调得越高,并发能力越强——这也是多核物理服务器做高并发入口的优势。
二、开启Gzip压缩(立竿见影)
压缩文本资源,传输体积可降60%—80%,加载更快、省带宽:
gzip on;
gzip_comp_level 5;
gzip_min_length 1k;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
有条件可用更高效的Brotli压缩(需编译模块)。这一步几乎零成本换来明显的速度提升。
三、静态资源缓存
让浏览器缓存图片、CSS、JS,回头客秒开、减少请求:
location ~* \.(jpg|jpeg|png|gif|webp|css|js|ico|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
配合CDN(参考博客Cloudflare篇)效果更佳,静态资源就近分发、源站压力骤降。
四、keepalive长连接
复用TCP连接,减少握手开销:
keepalive_timeout 65;
keepalive_requests 1000;
# 反代到后端也开启长连接
upstream backend {
server 127.0.0.1:8080;
keepalive 32;
}
五、缓冲区调优
合理的缓冲区避免频繁读写磁盘和请求被截断:
client_max_body_size 50m; # 允许的上传大小(按需)
client_body_buffer_size 128k;
proxy_buffer_size 16k;
proxy_buffers 4 32k;
上传大文件的站点记得调大 client_max_body_size,否则上传会报413错误。
六、配合系统层优化
Nginx性能不只在自身配置,还依赖系统层:
- 文件描述符限制:高并发需调大系统的 ulimit 和 worker_rlimit_nofile,否则连接数上不去;
- 内核网络参数:调整 net.core.somaxconn 等TCP参数应对高并发;
- 开启BBR:提升网络吞吐(参考博客BBR篇);
- 底层是好线路好硬件:调优是”榨干现有性能”,线路差、超售严重的机器调到极限也有限,优质CN2线路+独享资源才是性能地基。
七、验证调优效果
调优前后用压测工具对比(参考博客压测篇):wrk -t4 -c200 -d30s https://你的域名/,看QPS提升多少、响应时间和错误率变化。同时用 nginx -t 确保每次改动语法正确再 reload。
结论
Nginx调优的关键动作:worker按核心数、连接数调高、开Gzip、静态资源缓存、keepalive复用、缓冲区合理。配合系统层参数和BBR,能显著提升并发和速度。记住调优是锦上添花,底层的好线路好硬件才是根本。在你的服务器上按本文调一遍,压测对比,感受性能的提升。