sub_filter是最轻量、无需修改源站代码的前端脚本注入方案,适用于灰度、SaaS、测试标识等场景;需确保响应为text/html、禁用gzip、启用sub_filter_once off,并在或前安全注入,配合map按环境动态注入脚本。

在 Nginx 反向代理网关层动态注入前端脚本,sub_filter 是最轻量、无需修改源站代码的方案之一。它适用于灰度环境、多租户 SaaS、测试环境标识、埋点脚本差异化注入等场景。关键在于精准匹配 HTML 响应体、避免污染非文本内容,并处理好替换顺序与缓存干扰。
确保 sub_filter 生效的基础条件
sub_filter 默认只作用于 text/html 类型响应,且要求响应未被压缩(gzip/brotli 会破坏文本匹配)。需确认以下几点:
- 后端返回的
Content-Type包含text/html(如text/html; charset=utf-8) - 关闭 Nginx 对该 location 的
gzip on或显式禁用:gzip off; - 启用
sub_filter_once off(默认为 on),否则只替换第一个匹配项 - 开启
sub_filter_last_modified off(若需支持缓存协商,但通常建议关闭以避免干扰)


















