nginx缓存可有效拦截重复api请求,降低后端压力;需筛选高频读低频写、用户态无关、允许短暂过期、需兜底可用的接口;通过proxy_cache_path、proxy_cache、proxy_cache_key等配置启用,并用proxy_cache_min_uses、proxy_cache_lock等防滥用,再通过x-cache-status验证效果。

直接用 Nginx 缓存拦截重复 API 请求,是最有效降低后端请求频率的手段。它不依赖后端改代码,也不加新服务,而是让大量本该打到后端的请求,在 Nginx 层就终止——响应从本地磁盘或内存返回,后端完全不参与。
明确哪些 API 适合缓存
不是所有接口都该缓存,关键看数据变化频率和业务容忍度:
- 高频读、低频写:如商品详情、文章内容、活动页数据,更新周期以小时或天计
- 用户态无关、结果稳定:如城市列表、配置中心、字典项,几乎不变,可缓存数小时甚至一天
- 允许短暂过期:比如实时性要求不高的统计接口,缓存 1–5 分钟也能显著降压
- 需兜底可用:后端偶发超时或故障时,仍可返回旧缓存,保障基本功能
配置 proxy_cache 的核心步骤
缓存生效不只靠开启,得配对关键参数:
- 在 http 块定义缓存区:
proxy_cache_path /var/cache/nginx/api levels=1:2 keys_zone=api_cache:100m max_size=5g inactive=10m use_temp_path=off; - 在 location 块启用缓存:
proxy_cache api_cache; - 设置缓存键:
proxy_cache_key "$host|$request_uri|$args";(避免因参数顺序不同导致重复缓存) - 按状态码控制时长:
proxy_cache_valid 200 5m; proxy_cache_valid 404 1m; - 忽略后端干扰头:
proxy_ignore_headers Cache-Control Expires Set-Cookie;(防止后端设了 no-cache 就不缓存)
防止缓存滥用与穿透
光缓存不够,还要控写入、防并发、保可用:
- 用
proxy_cache_min_uses 2;避免为单次请求浪费空间,同一 key 至少访问两次才写入 - 开
proxy_cache_lock on;,多个并发请求命中未缓存 key 时,只放行第一个回源,其余等待返回 - 加
proxy_cache_use_stale error timeout http_500;,后端挂了也返回旧数据,不丢响应 - 对带用户标识的敏感路径(如
/api/user/profile),用proxy_cache_bypass $cookie_user_id;显式跳过缓存
验证与可观测性
缓存是否真起作用,不能只看配置,要靠响应头确认:
- 加
add_header X-Cache-Status $upstream_cache_status;,返回HIT/MISS/EXPIRED等状态 - 用
curl -I https://api.example.com/v1/data检查响应头中是否有X-Cache-Status: HIT - 配合日志变量
$upstream_cache_status记录命中率,定期统计优化策略
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











