要优化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上的性能,从而更好地服务于用户。