ngx_http_sub_module模块是一个过滤器,它通过将一个指定的字符串替换为另一个指定的字符串来修改响应。
      默认情况下未构建此模块,应使用--with-http_sub_module配置参数启用它。

sub_filter

配置格式

语法: sub_filter string replacement;
默认: —
上下文: http, server, location

      设置要替换的字符串和替换字符串。忽略大小写匹配要替换的字符串。 要替换的字符串和替换字符串可以包含变量。 可以在一个配置级别上指定几个sub_filter指令。当且仅当当前级别上未定义sub_filter指令时,这些指令才从上一级继承。

示例

aaaaaaa
bbbbbbb
aaaaaaa
ccccccc
ddddddd
sub_filter 'aaaaaaa' 'replacement';

请输入图片描述

      成功替换!但是为什么只替换了第一个呢?这是因为默认配置sub_filter_once on;将其设置为off即可全部替换了。
请输入图片描述

sub_filter_last_modified

配置格式

语法: sub_filter_last_modified on | off;
默认: sub_filter_last_modified off;
上下文: http, server, location
这条指令在1.5.1版本出现。

      允许在替换期间从原始响应中保留"Last-Modified"字段,以方便响应缓存。
      默认情况下,在处理期间修改响应的内容时,将删除标头字段。

sub_filter_once

配置格式

语法: sub_filter_once on | off;
默认: sub_filter_once on;
上下文: http, server, location

      设置要替换一次还是重复替换的每个字符串。

sub_filter_types

配置格式

语法: sub_filter_types mime-type ...;
默认: sub_filter_types text/html;
上下文: http, server, location

      除了"text/html"之外,还可以在具有指定MIME类型的响应中启用字符串替换。 特殊值"*"与任何MIME类型匹配。

示例

#这是原来的css文件,由于sub_filter默认只对text/html类型的响应进行替换操作,所以css文件不会
body{
 margin: 0 auto;
}

.my-title{
 margit: 0 auto;
}
sub_filter 'my-title' 'title';
#对text/css类型的响应也进行替换操作
sub_filter_types text/css;

请输入图片描述

      如没有变化,注意缓存。

Last modification:March 27th, 2020 at 11:06 pm
如果觉得我的文章对你有用,请随意赞赏