CDN 层(下)— OpenResty 静态缓存、灰度发布、Lua 脚本、CDN 演进

概述

Day30 深入 CDN 自建方案,覆盖 OpenResty(Nginx + LuaJIT)的静态文件缓存实现、灰度发布(金丝雀发布)、Lua 脚本在 Nginx 阶段中的应用、缓存策略对比(传统/分发/静态 CDN 架构演进对比表),以及生产环境的灰度比例分流配置。

核心内容

CDN 架构演进

阶段架构说明
阶段1传统架构用户直接请求后端应用
阶段2分发架构CDN 分发 + 应用服务器
阶段3静态CDNNginx 缓存静态文件,CDN 回源到 Nginx
阶段3+动静结合静态文件 CDN,动态请求负载均衡(生产推荐)

OpenResty

  • = Nginx 核心 + LuaJIT + 众多 Lua 模块
  • Nginx 阶段:set_by_lua(变量设置)→ rewrite_by_lua(URL 重写)→ access_by_lua(访问控制)→ content_by_lua(内容生成)→ log_by_lua(日志记录)
  • 文件缓存:对静态文件设置过期时间(expires),结合 proxy_cache 提高命中率

灰度发布(金丝雀发布)

  • 引入分流(少量用户先跑新版本)→ 持续观察 → 全量升级
  • 灰度策略:按权重、按 IP、按地域、按用户分组

关联