Nginx性能优化涉及多个维度,以下列举十种提升Nginx性能的方法:
-
调整worker_processes:
根据服务器的实际CPU核心数来设置合适的worker_processes数,通常设置为CPU核心数或其一半。worker_processes auto; # 或者使用具体的数字,如worker_processes 4;
-
配置worker_connections:
增加每个worker进程可处理的最大连接数。worker_connections 1024; # 或者根据系统资源情况调整更高的值
-
启用epoll或类似的高效事件模型:
对于Linux系统,确保Nginx编译时启用了epoll模型。 -
启用HTTP/2协议:
HTTP/2支持多路复用,可以减少连接开销和提升加载速度。listen 443 ssl http2;
-
启用Gzip压缩:
减少传输数据量,提升响应速度。gzip on; gzip_types text/plain text/css text/xml text/javascript application/x-javascript;
-
缓存优化:
对静态资源和可缓存的内容启用缓存。proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; location /static/ { proxy_cache my_cache; proxy_pass http://backend; }
-
负载均衡:
使用upstream模块配置负载均衡,分散请求到多个后端服务器。upstream backend { server backend1.example.com; server backend2.example.com; keepalive 100; # 保持长连接,减少建立连接的开销 }
-
限制并发连接和请求速率:
使用limit_conn
和limit_req
模块来防止过多的并发连接和过于频繁的请求。limit_conn_zone $binary_remote_addr zone=my_conn_limit:10m; limit_conn my_conn_limit 100; limit_req_zone $binary_remote_addr zone=my_req_limit:10m rate=1r/s; limit_req zone=my_req_limit burst=5 nodelay;
-
启用sendfile和tcp_nodelay:
提升文件传输效率和减少延迟。sendfile on; tcp_nodelay on;
-
优化缓存头和ETag:
确保正确的缓存头设置,例如expires
、cache-control
和etag
,以充分利用客户端缓存。location / { expires 1h; add_header Cache-Control "public"; }
除了上述配置优化外,定期清理无效的缓存文件,合理配置系统内核参数(如TCP参数),以及根据业务情况进行合理的URL重写和重定向,也是提升Nginx性能的重要手段。同时,确保服务器有足够的内存和磁盘空间,并且正确配置日志记录策略,避免因日志写入造成的性能瓶颈。