Nginx 性能优化常用配置
Nginx 默认配置已经可以满足很多场景,但在高并发访问、静态资源较多或代理流量较大的系统中,合理调优可以进一步提升吞吐能力和稳定性。
一、worker 进程与连接数
worker_processes 通常设置为 auto,让 Nginx 根据 CPU 核心数自动调整:
worker_processes auto;
events {
worker_connections 4096;
multi_accept on;
}
理论最大连接数约等于 worker_processes × worker_connections,但还会受到系统文件描述符限制影响。
二、开启高效文件传输
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
}
sendfile 可以减少内核态和用户态之间的数据拷贝,适合静态文件服务场景。
三、gzip 压缩
对文本类资源开启压缩,可以减少网络传输体积:
gzip on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript application/xml image/svg+xml;
压缩等级不宜盲目调得过高,否则可能增加 CPU 消耗。
四、静态资源缓存
对图片、CSS、JavaScript 等静态资源设置浏览器缓存:
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000";
}
如果前端资源文件名带 hash,可以设置更长缓存时间。
五、日志优化
访问日志对排查问题很有价值,但高流量场景下也会产生 I/O 压力。可以对静态资源关闭访问日志:
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg)$ {
access_log off;
}
六、系统层配合
Nginx 性能不仅取决于配置文件,也依赖操作系统参数,例如文件描述符、端口范围、TCP 队列等。生产环境应结合监控数据逐步调整,而不是直接套用固定模板。
七、小结
性能优化应遵循“先监控、再定位、后调整”的原则。建议记录每次变更前后的指标变化,避免因过度优化引入新的问题。