← 返回首页

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 队列等。生产环境应结合监控数据逐步调整,而不是直接套用固定模板。

七、小结

性能优化应遵循“先监控、再定位、后调整”的原则。建议记录每次变更前后的指标变化,避免因过度优化引入新的问题。