以下是优化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/Brotli压缩
gzip on; gzip_types text/css application/json; gzip_comp_level 6; brotli on; // 需安装模块,压缩率更高 ``` // 减少传输数据量 - HTTP/2与TLS优化
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/内存)和业务场景(静态/动态内容比例)灵活调整参数。