sub_filter

sub_filter 指令用于通过将特定字符串替换为其他字符串来修改响应体。 — NGINX HTTP Core

sub_filter
httpserverlocation
语法sub_filter "search" "replace";
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数2

说明

sub_filter 指令允许你在由 NGINX 提供的 HTTP 流量的响应体中动态替换字符串。这对于即时修改内容特别有用,例如根据环境调整链接或文本,或用于本地化。该指令接受两个参数:第一个是要在响应体中查找的字符串,第二个是要替换成的字符串。每当 NGINX 处理响应时,它会在输出中扫描指定的搜索字符串出现位置,并在将响应发送给客户端之前用指定的替换字符串替换它们。 需要注意的是,sub_filter 指令仅在响应体大小小于配置的缓冲区大小且响应状态码在 200-299 范围内时才会生效。此外,如果正确配置了 'sub_filter_types' 指令,sub_filter 支持使用正则表达式来匹配字符串。这有助于实现更复杂的替换,但在使用正则表达式时需要小心,确保模式正确转义并精心编写,以避免意外匹配或由于复杂模式中过度回溯而导致的性能下降。

配置示例

location /example {
    sub_filter "example.com" "example.org";
    sub_filter_once off;
}

确保 'sub_filter_types' 指令包含需要进行替换的响应的 MIME types,否则该指令可能无法按预期工作。

只有当响应的 Content-Type 与 'sub_filter_types' 中指定的类型匹配且响应状态码在 200-299 范围内时,才会发生替换。

如果使用正则表达式,请确保模式格式正确,以避免产生无效匹配。