Nginx性能调优完全指南:Worker进程、Gzip压缩、静态资源缓存配置实录
Nginx默认配置适合快速启动,但对于生产环境来说,默认值往往远未达到服务器硬件的最优性能。本文系统梳理Nginx核心调优参数,帮你把同等硬件的性能发挥到极致。
一、Worker进程配置
worker_processes — 工作进程数
# 自动设置为CPU核心数(推荐)
worker_processes auto;
# 或手动指定(等于CPU核心数)
worker_processes 4; # 4核服务器worker_connections — 每进程最大连接数
events {
worker_connections 4096; # 默认1024,生产环境建议2048~8192
use epoll; # Linux下使用epoll高效I/O模型
multi_accept on; # 允许一次接受多个连接
}服务器理论最大并发连接数 = worker_processes × worker_connections。4核服务器设置worker_connections 4096,最大并发约16384个连接。
worker_rlimit_nofile — 文件描述符限制
# nginx.conf顶层(与worker_processes同级)
worker_rlimit_nofile 65535;
# 同时修改系统限制
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf二、HTTP核心参数调优
http {
# 开启高效文件传输
sendfile on;
tcp_nopush on;
tcp_nodelay on;
# 保持连接(减少TCP握手开销)
keepalive_timeout 65;
keepalive_requests 1000;
# 隐藏版本号(安全)
server_tokens off;
# 客户端请求限制
client_max_body_size 64m;
client_body_timeout 30s;
client_header_timeout 30s;
# 响应超时
send_timeout 30s;
# 打开文件缓存(减少磁盘I/O)
open_file_cache max=10000 inactive=30s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}三、Gzip压缩配置
Gzip压缩可将HTML/CSS/JS等文本内容体积减少50%~80%,显著降低带宽消耗和页面加载时间。
http {
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6; # 压缩级别1~9,6是速度与压缩率的最佳平衡
gzip_min_length 1024; # 小于1KB的文件不压缩(压缩开销大于收益)
gzip_buffers 16 8k;
gzip_http_version 1.1;
# 需要压缩的MIME类型
gzip_types
text/plain
text/css
text/xml
text/javascript
application/json
application/javascript
application/xml
application/xml+rss
application/atom+xml
image/svg+xml
font/ttf
font/otf;
}四、静态资源缓存配置
为静态资源设置长期缓存头,让浏览器本地缓存文件,减少重复请求:
server {
# 图片、字体 — 缓存1年
location ~* \.(jpg|jpeg|png|gif|ico|webp|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
access_log off; # 静态资源不记录访问日志,减少I/O
}
# CSS、JS — 缓存30天(前端构建时通过文件名hash控制版本)
location ~* \.(css|js)$ {
expires 30d;
add_header Cache-Control "public";
access_log off;
}
# HTML — 不缓存(保证内容实时更新)
location ~* \.html$ {
expires -1;
add_header Cache-Control "no-cache, no-store, must-revalidate";
}
}五、开启HTTP/2
HTTP/2支持多路复用,单个TCP连接可并发传输多个资源,页面加载速度可提升20%~50%。
server {
listen 443 ssl http2; # 添加http2关键字即可开启
server_name 你的域名;
ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem;
# TLS优化
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
# OCSP Stapling(减少SSL握手时间)
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 valid=300s;
}六、FastCGI缓存(PHP/WordPress加速)
对于WordPress等PHP站点,FastCGI缓存可将动态页面响应速度提升10~100倍:
http {
# 定义缓存区域(在http块中)
fastcgi_cache_path /var/cache/nginx levels=1:2
keys_zone=wordpress:100m
inactive=60m
max_size=1g;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
}
server {
set $skip_cache 0;
# POST请求不缓存
if ($request_method = POST) { set $skip_cache 1; }
# 已登录用户不缓存
if ($http_cookie ~* "wordpress_logged_in") { set $skip_cache 1; }
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_cache wordpress;
fastcgi_cache_valid 200 60m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-FastCGI-Cache $upstream_cache_status;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}七、调优效果验证
# 测试配置语法
nginx -t
# 重载配置(不中断服务)
nginx -s reload
# 压测对比(安装wrk)
apt install wrk -y
# 调优前后各运行一次,对比QPS和延迟
wrk -t4 -c100 -d30s https://你的域名/八、完整优化配置总结
按照本文配置完成后,常见的性能提升幅度:
- 静态资源请求减少:40%~60%(浏览器缓存命中)
- 传输体积减少:50%~70%(Gzip压缩)
- 并发处理能力提升:3~5倍(worker参数优化)
- PHP页面响应速度:10~50倍(FastCGI缓存)
IDC.Net的香港VPS默认提供高性能NVMe SSD和充足带宽,配合以上Nginx调优配置,可以将服务器性能发挥到最大值。
版权声明:
作者:后浪云
链接:https://idc.net/help/442711/
文章版权归作者所有,未经允许请勿转载。
THE END
