一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Nginx 中如何有效缩短请求响应时间

时间:2026-07-09 09:48:46 编辑:袖梨 来源:一聚教程网

降低Nginx响应时间需聚焦连接建立、请求处理、后端转发、资源交付四环节,通过长连接复用、DNS缓存、静态资源本地服务、关闭冗余日志、优化worker配置、启用sendfile与高效缓存压缩等措施精准优化。

降低 Nginx 请求响应时间,关键不是堆参数,而是精准切中连接建立、请求处理、后端转发和资源交付这四个耗时环节。多数百毫秒级延迟,其实来自重复建连、阻塞解析、冗余日志或缓存未生效等可避免问题。

复用连接,减少三次握手开销

短连接是 TTFB(首字节时间)升高的主因。必须让客户端与 Nginx、Nginx 与后端都保持长连接:

  • httpserver 块中设 keepalive_timeout 25;(纯 API 场景推荐 15–25 秒)
  • upstream 块中启用连接池:keepalive 32;,并配套写入 proxy_http_version 1.1;proxy_set_header Connection "";
  • 确保 upstream server 使用固定域名(如 server api.example.com;),禁用 proxy_pass http://$host 这类变量写法,否则每次请求都会触发 DNS 解析

加速 DNS 解析与路径处理

动态解析上游地址或执行复杂重写,会把毫秒级延迟变成百毫秒级:

  • 显式配置 DNS 缓存:resolver 8.8.8.8 114.114.114.114 valid=30s;,再加 resolver_timeout 3s;
  • 静态资源走本地服务,不走 proxy_pass:location ~* .(js|css|png|woff2)$ { expires 365d; add_header Cache-Control "public"; }
  • 关闭非必要日志:对健康检查、静态资源等路径,在 location 中写 access_log off;;避免全局开启 access_log 写磁盘干扰连接建立

提升单 worker 处理能力

worker 进程若频繁争抢 CPU 或卡在文件 I/O,响应就会抖动:

  • worker_processes auto;(自动匹配物理核心数),并启用 worker_cpu_affinity auto;
  • worker_rlimit_nofile 200000;,同时在系统层同步调高:* soft nofile 65535* hard nofile 65535
  • 启用高效文件传输:sendfile on;tcp_nopush on;open_file_cache max=1000 inactive=20s;

压缩与缓存协同减载

响应体大、重复生成、反复读磁盘——这三类问题都能被压缩+缓存组合解决:

  • Gzip 开启且设合理阈值:gzip on; gzip_min_length 500; gzip_comp_level 6; gzip_types text/css application/javascript application/json;
  • 静态资源强缓存:expires 365d;;动态接口配合后端 Cache-Control: public, max-age=60 可缓存 1 分钟
  • 若支持 Brotli,压缩率更高:brotli on; brotli_comp_level 8; brotli_types text/plain application/json;(需编译 ngx_brotli 模块)

热门栏目