Nginx中配置静态资源CDN回源需四步:①用location+alias/root精准映射路径;②设expires和Cache-Control实现强缓存;③allow限定CDN IP段并加标识头;④启用sendfile、关闭server_tokens等优化回源性能与安全。

在 Nginx 中,通过 location 块配置静态资源的源站服务,是 CDN 加速落地的关键一环。核心目标是:让 CDN 节点能稳定、高效、安全地回源获取文件,同时控制缓存行为、隐藏源站细节、减少无效请求。
明确静态资源路径与目录映射
使用 location 匹配静态资源路径(如 /static/、/assets/ 或按后缀匹配),并用 alias 或 root 指向真实文件位置:
-
alias更适合子路径映射,末尾需加/,例如:location /static/ { alias /var/www/myapp/static/; } -
root是拼接路径,适合根级统一目录,例如:location /images/ { root /var/www/assets; }→ 请求/images/logo.png对应文件为/var/www/assets/images/logo.png
设置强缓存响应头(指导 CDN 和浏览器)
CDN 依赖 HTTP 缓存头决定是否缓存及保留多久。在 location 块中主动设置:
-
expires 1y;—— 设置绝对过期时间(如 1 年) -
add_header Cache-Control "public, max-age=31536000";—— 更精细控制,public允许 CDN 缓存 - 对不希望缓存的资源(如带版本号但路径不变的 JS),可加
add_header Cache-Control "no-cache";配合 ETag 或 Last-Modified
限制并识别 CDN 回源请求
只允许合法 CDN 节点回源,防止恶意直连源站暴露 IP 或绕过 CDN:
- 用
allow/deny限定 CDN 提供商公布的 IP 段(如阿里云、腾讯云 CDN 的回源段) - 配合
if ($http_user_agent ~* "Aliyun|Tencent")辅助校验(非强制,因 UA 可伪造) - 添加标识头便于日志追踪:
add_header X-Cache-Source "nginx-origin";
优化回源性能与调试支持
让每次回源更轻量、可观察:
- 关闭无关日志:
access_log off;减少磁盘 I/O - 启用零拷贝:
sendfile on;+tcp_nopush on;提升大文件传输效率 - 返回缓存状态供调试:
add_header X-Upstream-Cache-Status $upstream_cache_status;(若启用了 proxy_cache) - 确保响应头不含敏感信息:
server_tokens off;隐藏 Nginx 版本


















