subs_filter

`subs_filter` 指令在 HTTP 请求的响应主体中执行字符串替换。

语法subs_filter source_str destination_str [gior];
默认值none
上下文http, server, location
参数2+

说明

subs_filter 指令(属于 NGINX 字符串替换模块)允许用户在将响应发送到客户端之前,直接在响应主体中指定所需的替换。它同时支持固定字符串和正则表达式替换。基本用法是定义一个源字符串和一个目标字符串,其中源表示要在响应中匹配并替换的文本。此外,该指令接受用于修改其行为的标志;例如,'g' 表示替换源字符串的所有出现,'i' 使匹配不区分大小写,'o' 将替换限制为第一次出现。'r' 标志指定源为正则表达式而非固定字符串,但与固定字符串模式相比,其变量处理较为受限。

用户可以在同一上下文中调用多个 subs_filter 指令,从而实现复杂的替换场景。需要注意的是,subs_filter 只能处理未压缩的文本响应,无法处理已压缩的输出。为了确保正确运行,必须使用 subs_filter_types 指定适当的内容类型。总体而言,该指令在修改 HTTP 响应方面提供了相当大的灵活性,类似于 Apache 的 mod_substitute 模块所提供的功能。

配置示例

location / {
    subs_filter_types text/html text/css;
    subs_filter st(\d*).example.com $1.example.com ir;
    subs_filter a.example.com s.example.com;
    subs_filter http://$host https://$host;
}

确保正则表达式中的源字符串不包含变量,因为变量仅在固定字符串模式下可用。

除非明确配置为不压缩输出,否则替换不会在已压缩的响应上生效。

检查是否通过 subs_filter_types 配置了适当的 MIME 类型,否则该指令不会在不受支持的内容类型上触发。

← 返回所有指令