优化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压缩。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; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; proxy_cache_use_stale error timeout updating; }
:缓存动态内容。
操作系统调优
- 内核参数调整:
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;
。
HTTP/2性能优化
listen 443 ssl http2;
:启用HTTP/2协议。ssl_protocols TLSv1.2 TLSv1.3;
:仅保留安全协议。ssl_session_cache shared:SSL:10m;
:会话复用配置。ssl_session_timeout 10m;
:会话超时时间。
在进行任何系统优化之前,建议备份重要的数据,并谨慎操作,以免影响系统稳定性。