以下是优化Ubuntu下Nginx性能的关键措施:
worker_processes auto;
// 自动匹配CPU核心数worker_connections 4096;
// 单进程最大连接数,需结合系统限制调整worker_cpu_affinity auto;
// 绑定进程到CPU核心(NUMA架构优化)keepalive_timeout 65s;
// 长连接超时时间keepalive_requests 1000;
// 单连接最大请求数location ~* \.(jpg|css|js)$ {
expires 365d;
add_header Cache-Control "public, immutable";
}
``` // 缓存1年,减少重复请求
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:100m max_size=10g inactive=24h;
proxy_cache my_cache;
proxy_cache_valid 200 10m; // 缓存200状态码10分钟
``` // 缓存后端响应,降低服务器负载
gzip on; gzip_types text/css application/json; gzip_comp_level 6;
brotli on; // 需安装模块,压缩率更高
``` // 减少传输数据量
listen 443 ssl http2;
// 启用HTTP/2提升并发能力ssl_protocols TLSv1.3 TLSv1.2;
// 仅使用安全协议ssl_session_cache shared:SSL:10m;
// 会话复用减少握手延迟sudo sysctl -w net.core.somaxconn=65535 # 增大TCP连接队列
sudo sysctl -w net.ipv4.tcp_tw_reuse=1 # 快速回收TIME_WAIT连接
``` // 优化TCP协议栈性能
/etc/security/limits.conf
,添加:* soft nofile 65535
// 提升单个进程最大文件句柄数upstream backend {
least_conn; // 动态分配请求到连接数最少的后端
server 10.0.0.1 weight=3; // 权重负载均衡
}
``` // 提升高并发场景下的请求分发效率
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=100r/s;
location /api {
limit_req zone=api_limit burst=20 nodelay; // 限制API接口请求频率
}
``` // 防止CC攻击
sudo nginx -t
// 检查配置语法sudo systemctl reload nginx
// 重新加载配置nginx -s status
或集成Prometheus+Grafana监控QPS、缓存命中率等指标注意事项:修改配置后需逐步测试,避免一次性调整过多参数导致服务异常。根据服务器硬件(CPU/内存)和业务场景(静态/动态内容比例)灵活调整参数。