以下是優化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/內存)和業務場景(靜態/動態內容比例)靈活調整參數。