在Ubuntu下優化Nginx性能可以通過多種方法實現,主要包括進程模型調優、傳輸效率優化、緩存策略優化、操作系統調優等。以下是詳細的優化措施:
進程模型調優:
worker_processes auto;:自動匹配CPU核心數。worker_cpu_affinity auto;:CPU親和性綁定。worker_rlimit_nofile 65535;:突破系統文件限制。events { worker_connections 4096; }:單個進程承載連接數。multi_accept on;:批量接收新連接。use epoll;:使用高效事件模型。傳輸效率優化:
client_body_buffer_size 16k;:請求體緩沖區大小。client_header_buffer_size 4k;:請求頭緩沖區大小。large_client_header_buffers 4 32k;:超大請求頭處理。client_max_body_size 20m;:最大上傳文件限制。client_body_timeout 30s;:請求體超時時間。sendfile on;:零拷貝傳輸。tcp_nopush on;:合并數據包發送。壓縮配置:
gzip on;:啟用壓縮。gzip_min_length 1k;:超過1KB才壓縮。gzip_comp_level 4;:壓縮級別(1-9)。gzip_types text/plain application/xml application/json;:壓縮文件類型。gzip_vary on;:兼容老舊代理服務器。緩存策略優化:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 365d; }:開啟內存緩存。add_header Cache-Control "public, max-age=31536000";。open_file_cache max=1000 inactive=20s;。open_file_cache_valid 30s;。open_file_cache_min_uses 2;。proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g;。location / { proxy_cache my_cache; }。操作系統調優:
net.core.somaxconn = 65535;:最大待處理數據包。net.ipv4.ip_local_port_range = 1024 65535;:臨時端口范圍。net.ipv4.tcp_tw_reuse = 1;:快速回收TIME-WAIT連接。net.ipv4.tcp_tw_recycle = 1;:最大打開文件數。fs.file-max = 209;。其他優化建議:
listen 443 ssl http2;:啟用HTTP/2協議。ssl_protocols TLSv1.2 TLSv1.3;:僅保留安全協議。ssl_session_cache shared:SSL:10m;:會話復用配置。通過這些優化措施,可以顯著提升Nginx在Ubuntu上的性能,從而更好地服務于用戶。