Nginx需按请求类型差异化配置策略:API/HTML/JSON禁用缓冲、启用HTTP/2、设短超时;大文件启用sendfile、放宽上传限制;WebSocket等长连接透传Upgrade头、禁缓存;静态资源配强缓存与文件句柄缓存。

直接按请求类型配置访问策略,是让 Nginx 既安全又高效的关键。不能靠“一刀切”,而要识别流量本质——是 API 调用、文件下载、长连接,还是静态资源?每类行为不同,策略也必须区分对待。
小文本类请求(API/HTML/JSON):严控延迟,拒绝缓存干扰
这类请求对首字节时间(TTFB)极其敏感,重点是快进快出:
- 禁用代理缓冲:
proxy_buffering off;,避免 Nginx 积攒响应再发 - 关闭 Nagle 算法:
tcp_nodelay on;,小包不等待,立即推送 - 启用 HTTP/2:
http2 on;,支持多路复用,消除队头阻塞 - 设短超时:
proxy_connect_timeout 3s; proxy_read_timeout 5s;,快速失败,不占 worker - 对管理路径(如
/admin、/api/v1/submit)直接关缓存:proxy_cache off;
大文件类请求(下载/视频/上传):专注吞吐,减少拷贝
目标不是快,而是稳且满带宽:
- 启用内核零拷贝:
sendfile on;+tcp_nopush on; - 放宽上传限制:
client_max_body_size 2G;,并延长超时:client_body_timeout 600s; - 增大 header 缓冲:
client_header_buffer_size 4k;、large_client_header_buffers 4 16k; - 上传接口建议单独
location,避免与 API 共享 timeout 或 buffer 设置
长连接类请求(WebSocket/gRPC/SSE):保连接,防中断
连接生命周期长,最怕代理层“好心办坏事”:
- 透传升级头:
proxy_http_version 1.1;+proxy_set_header Upgrade $http_upgrade;+proxy_set_header Connection "upgrade"; - 禁用缓冲:
proxy_buffering off; - 设长读写超时:
proxy_read_timeout 300;、proxy_send_timeout 300; - 绝对禁用缓存:
proxy_cache off;,长连接内容不可复用
静态资源类(JS/CSS/图片):强缓存 + 文件元数据优化
核心是减少磁盘 I/O 和后端穿透:
- 哈希化资源(如
app.a1b2c3.js)配 immutable 强缓存:add_header Cache-Control "public, max-age=31536000, immutable"; - 普通静态资源(如
logo.png)设 30 天协商缓存:add_header Cache-Control "public, max-age=2592000"; - 启用文件句柄缓存:
open_file_cache max=10000 inactive=60s;+open_file_cache_valid 30s; - 关闭访问日志:
access_log off;,大幅降低磁盘压力


















