在http块中用include抽离全站通用缓存策略最简洁易维护:将expires、add_header等统一写入独立文件(如global-cache.conf),被所有server块复用;动态内容可按需在server内用location覆盖,优先级更高。

直接在 http 块里用 include 抽离全站通用缓存策略,是最简洁、易维护的做法。关键是把缓存控制逻辑(如 expires、add_header Cache-Control)统一写进独立文件,再被所有 server 块复用,避免重复配置和遗漏。
1. 创建通用缓存策略文件
新建一个配置文件,比如 /etc/nginx/conf.d/global-cache.conf,内容聚焦于响应头控制:
- 对常见静态资源后缀统一设长缓存:
expires 1y; - 搭配现代缓存头:
add_header Cache-Control "public, immutable"; - 对 HTML、JSON 等动态内容设短缓存或禁用:
location ~ \.(html|json|xml)$ { expires 1m; add_header Cache-Control "public, must-revalidate"; } - 不写
proxy_cache相关指令——那是反向代理缓存,和浏览器端expires是两套机制,混在一起反而难管理
2. 在 http 块中 include 该文件
打开主配置 /etc/nginx/nginx.conf,在 http 块内靠前位置加入:
http {
include /etc/nginx/conf.d/global-cache.conf;
# 其他配置……
}
这样所有后续定义的 server 块都会自动继承这个基础缓存规则,无需每个站点单独写。
3. 各虚拟主机按需覆盖,不破坏全局一致性
如果某个域名需要差异化策略(比如 API 接口禁止缓存),就在对应 server 块里用更细粒度的 location 覆盖:
location /api/ { expires -1; add_header Cache-Control "no-cache, no-store"; }- 这类局部配置优先级高于
http块里的include,不会影响其他站点 - 保持全局策略干净,特殊逻辑收束在具体
server中,结构清晰
4. 验证与 reload
检查语法并重载:
-
nginx -t确保 include 文件路径正确、无语法错误 -
nginx -s reload生效新配置 - 用
curl -I检查不同后缀资源的响应头,确认Expires和Cache-Control按预期输出











