Rootop 服务器运维与web架构

nginx实现响应内容修改

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

赞赏

微信赞赏支付宝赞赏

作者:Venus

专注于 服务器运维与web架构 E-mail:venus#rootop.org

评论已关闭。