要優化Nginx在Ubuntu服務器上的性能,可以采取以下措施:
進程模型調優:
worker_processes auto;
:自動匹配CPU核心數。worker_cpu_affinity auto;
:CPU親和性綁定。worker_rlimit_nofile 65535;
:突破系統文件限制。文件描述符上限設置:預防"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";}
:開啟內存緩存。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上的性能,從而更好地服務于用戶。