把静态站迁到自建 Nginx 并开启 Brotli 的完整记录

把跑在托管平台上的静态站迁到自建 Nginx,先在本地用同一份构建产物起容器验证,确认路由和 404 行为一致后再切 DNS。编译 Brotli 模块时踩了动态模块 ABI 不匹配的坑,改用与 Nginx 同源编译的源码重新生成模块才加载成功,并给 brotli_static 配了预压缩文件。缓存策略上对 HTML 设 no-cache、对带哈希的静态资源设一年 immutable,同时保留 gzip 作为回退。切换后首字节时间下降,Brotli 对文本类资源的压缩率优于 gzip。结论是自建部署可控性更强,但模块版本必须与 Nginx 严格对齐,预压缩和缓存头要一起设计。

把跑在托管平台上的静态站迁到自建 Nginx,先在本地用同一份构建产物起容器验证,确认路由和 404 行为一致后再切 DNS。编译 Brotli 模块时踩了动态模块 ABI 不匹配的坑,改用与 Nginx 同源编译的源码重新生成模块才加载成功,并给 brotli_static 配了预压缩文件。缓存策略上对 HTML 设 no-cache、对带哈希的静态资源设一年 immutable,同时保留 gzip 作为回退。切换后首字节时间下降,Brotli 对文本类资源的压缩率优于 gzip。结论是自建部署可控性更强,但模块版本必须与 Nginx 严格对齐,预压缩和缓存头要一起设计。

相关实践 →