ngx_http_sub_module配置参数有:
- sub_filter
- sub_filter_last_modified
- sub_filter_once
- sub_filter_types
ngx_http_sub_module 模块是一个过滤器模块,它通过将一个指定的字符串替换为另一个字符串来响应。ngx_http_sub_module的参数可以使用在 http,server,location语境上。
1、sub_filter
location / {
sub_filter 'string' 'replacement'
}
设置要替换的字符串和替换字符串。忽略大小写;替换的字符串和替换字符串可以包含变量;在一个配置级别中可以配置多个sub_filtel参数;如果当前级别没有指定,会从上级级别继承。
2、sub_filter_last_modified
sub_filter_last_modified on | off; 允许在替换保留期间保留原始响应中的“Last-modified”头字段,以便响应缓存。
3、sub_filter_once
sub_filter_once on | off; 是否只替换查找到的第一个字符串
4、sub_filter_types
sub_filter_types mime-type ...; 指定响应哪些类型的响应,"*"匹配所有(mime-type 必须是配置文件mime.types文件中存在的)。
问题:
1、请求头都是带 Accept-Encoding: gzip
因为浏览器都是允许压缩的,所以请求头都是带 Accept-Encoding: gzip 的。而 Nginx 的 sub_filter 无法处理压缩过的请求, Nginx 自身也不会解压。
解决方法:
- proxy_set_header Accept-Encoding "";禁用上游的压缩,对客户端的压缩不受影响。但是这样入站带宽就多很多了。
- 通过2次代理。第一层利用gunzip模块解压,第二层再用gzip模块压缩。
2.、中文替换不了
确定 nginx.conf 配置文件的编码方式是否为UTF-8