以下是优化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/内存)和业务场景(静态/动态内容比例)灵活调整参数。