Nginx采用事件驱动架构,需合理配置进程与连接参数以最大化利用服务器资源:
auto可自动匹配),确保每个核心处理一个进程,避免资源竞争。4096及以上(需配合worker_rlimit_nofile调整系统级文件描述符限制),提升并发处理能力。epoll(use epoll;),其高效的事件通知机制可显著提高高并发下的性能。worker_connections从1024提升至4096后,QPS(每秒查询率)增长51.6%。静态资源(图片、CSS、JS等)是网站流量的主要组成部分,优化其传输效率是提升性能的关键:
gzip on;并设置gzip_comp_level 6(平衡压缩率与CPU消耗),对文本类资源(CSS、JS、JSON)压缩率可达70%;支持brotli on;(需安装模块),压缩率比Gzip高21%-26%,但会增加15%左右的CPU消耗。expires指令设置强缓存(如expires 365d;),配合Cache-Control: public允许浏览器缓存;对版本化资源(如style.css?v=1.0)添加immutable属性(add_header Cache-Control "max-age=31536000, immutable"),彻底避免重复请求。动态内容(如PHP、Java应用)的处理效率直接影响网站响应速度:
proxy_cache_path配置缓存路径(如/var/cache/nginx),设置keys_zone(共享内存区域)和max_size(缓存大小),通过proxy_cache指令启用缓存,对动态接口(如API)缓存200/302状态码响应(proxy_cache_valid 200 302 10m),减少后端服务器压力。proxy_http_version 1.1启用HTTP/1.1(支持持久连接),并通过proxy_set_header Connection "";关闭连接保持,避免“队头阻塞”。通过负载均衡将请求分发到多个后端服务器,提升整体并发处理能力:
least_conn(最少连接)算法,将新请求分发给当前连接数最少的服务器,适合长连接场景(如文件上传);结合max_fails=3 fail_timeout=30s实现健康检查,自动剔除故障服务器。keepalive 32;设置与后端服务器的长连接池,减少TCP握手开销(每次握手需1.5 RTT),提升请求转发效率。启用HTTPS时,需优化加密配置以降低CPU消耗:
TLSv1.2 TLSv1.3(TLS1.3握手时间从300ms降至80ms);选择高效加密套件(如HIGH:!aNULL:!MD5),优先使用AES-GCM等对称加密算法。ssl_session_cache shared:SSL:10m; ssl_session_timeout 1h;启用会话缓存,减少重复握手;使用ssl_stapling on; ssl_stapling_verify on;启用OCSP Stapling,避免客户端向CA验证证书状态(减少RTT)。合理设置连接超时参数,减少无效连接占用资源:
30s(内容类网站可延长至60s,API服务缩短至10s),平衡连接复用与资源占用。client_header_timeout(读取请求头的超时时间)、client_body_timeout(读取请求体的超时时间)、send_timeout(发送响应的超时时间)均设置为15s,避免长时间等待无效请求。减少日志对性能的影响,同时通过监控及时发现问题:
access_log off;),或降低日志级别(error_log /var/log/nginx/error.log crit;);对访问日志启用缓冲(buffer=32k flush=300s;),减少磁盘I/O操作。active connections(活跃连接数)、request rate(请求速率)、response time(响应时间)等指标,及时发现性能瓶颈。以上策略需根据网站实际场景(如流量规模、业务类型)调整参数,例如静态资源为主的网站可重点优化缓存与压缩,动态内容为主的网站需加强反向代理缓存与负载均衡。配置修改后需通过nginx -t检查语法,再用nginx -s reload重新加载,避免服务中断。