ngx_http_sub_module模块是一个替换响应内容的模块,可以实现对请求返回的内容进行修改。
此模块nginx自带,但是需要编译nginx时加上此模块
--with-http_sub_module
官方文档:http://nginx.org/en/docs/http/ngx_http_sub_module.html
server { listen 80 default_server; server_name www.a.com; index index.html; root /www/www.a.com; sub_filter 'index.html' '替换的内容1'; sub_filter 'index.php' '替换的内容2'; sub_filter_once on; sub_filter_types *; }
# 测试html代码
<!doctype html> <html> <head> <meta charset="utf-8"> <title>测试</title> </head> <body> <h3>第1行内容index.html</h3> <h3>第2行内容index.html</h3> <h3>第3行内容index.php</h3> <h3>第4行内容index.php</h3> </body> </html>
当sub_filter_once on;值为on时,替换的内容只会替换一次,如果为off,则所有匹配的字符都会替换。
sub_filter_types 指对哪些mime-type类型替换。可以参考nginx下的mime.types文件。星号代表所有。
比如当反向代理后端服务时,后端服务代码里把资源地址写死时,可用此方法应急。
看网上有说开启gzip on;压缩功能时,导致无法替换,经过测试发现是可以。
可能是以前老版本的nginx不支持,这里测试本功能用的版本为nginx/1.16.0
原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/4653.html