Mastodon 反向代理的激进缓存策略:该缓存什么、绝不缓存什么,以及为何内容协商终将背叛你
本文详细介绍了为 Mastodon 实例配置 Nginx 反向代理缓存的实战经验。核心挑战在于 Mastodon 在同一 URL 上同时提供 HTML 页面、ActivityPub JSON 和 API JSON 三种响应,因此必须基于 Accept 头部进行内容协商来构建缓存键,否则远程实例可能收到 HTML 而浏览器收到 JSON。文章完整展示了缓存分区、缓存键设计、变体映射、绕过规则(基于请求方法、Authorization、Cookie 和 URI),以及针对资产、用户媒体、回复接口和媒体代理的七种不同位置配置,并特别强调了 Vary 头部、签名 URL 和 AUTHORIZED_FETCH 模式等关键陷阱。