要優化Nginx在Ubuntu上的性能,可以采取以下措施:
進程模型調優:
worker_processes auto;:自動匹配CPU核心數。worker_cpu_affinity auto;:CPU親和性綁定。worker_rlimit_nofile 65535;:突破系統文件限制。events {worker_connections 4096;:單個進程承載連接數。multi_accept on;:批量接收新連接。use epoll;:使用高效事件模型。文件描述符上限設置:預防"Too many open files"錯誤。
緩沖區智能配置:
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上的性能,從而更好地服務于用戶。