Nginx http_sub_module 替换网站响应内容

sub_module模块 


The ngx_http_sub_module module is a filter that modifies a response by replacing one specified string by another.

This module is not built by default, it should be enabled with the --with-http_sub_module configuration parameter.

ngx_http_sub_module 模块是一个过滤器,它修改网站响应内容中的字符串,比如你想把响应内容中的‘test’全部替换成‘mytest’,这个模块已经内置在Nginx中,但是默认未安装,需要安装需要加上配置参数:– with-http_sub_module  

 

安装sub_module模块  


[root@www ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --add-module=../nginx-http-concat-master
[root@www src]# cd /usr/src/nginx-1.16.1
[root@www nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --add-module=../nginx-http-concat-master --with-http
_sub_module
[root@www nginx-1.16.1]# make && make install
[root@www nginx-1.16.1]# make upgrade
语法: sub_filter string replacement;
默认值: —
配置段: http, server, location
设置需要使用说明字符串替换说明字符串.string 是要被替换的字符串, replacement 是新的字符串,它里面可以带变量。


语法: sub_filter_last_modified on | off;
默认值: sub_filter_last_modified off;
配置段: http, server, location
这个指令在 nginx 1.5.1 中添加,我这个版本没有,可以忽略掉.
Allows preserving the “ Last-Modified” header field from the original response during replacement to facilitate response caching.
By default, the header field is removed as contents of the response are modified during processing.


语法: sub_filter_once on | off;
默认值: sub_filter_once on;
配置段: http, server, location
字符串替换一次还是多次替换,默认替换一次,例如你要替换响应内容中的tets为mytest,如果有多个test 出现,那么只会替换第一个,如果 off,那么所有的test都会被替换


语法: sub_filter_types mime-type …;
默认值: sub_filter_types text/html;
配置段: http, server, location
指定需要被替换的 MIME 类型,默认为“ text/html”,如果制定为*,那么所有的

 

Nginx 替换字符串实例


server {
        listen       80;
        server_name  www.test.com;
        charset utf-8;
        root html;
        location /{
         sub_filter test 'mytest';
         sub_filter_once on;
      } }



[root@www ~]# echo "welcom to TEST" > /usr/local/nginx/html/sub1.html
[root@www ~]# cat /usr/local/nginx/html/sub1.html
welcom to TEST
[root@www ~]# curl www.test.com/sub1.html
welcom to mytes
我们可以看到它替换是不区分大小写的,而且test只被替换了一次。我把 sub_filter_once on 改成 off 试试。



[root@www ~]# echo "welcom to TEST website" >> /usr/local/nginx/html/sub1.html
[root@www ~]# cat /usr/local/nginx/html/sub1.html
welcom to TEST
welcom to TEST website
[root@www ~]# curl www.test.com/sub1.html
welcom to mytest
welcom to mytest website
我们可以看到test都被替换掉了!


 总结


这个 nginx 替换响应内容的模块安装使用尤为简单,应用的地方相对较少,在 nginx 中也是一个可选模块。假如站点出现什么敏感字,想修改很耗时间,不妨试试这个模块.或者想临时在站点中加上一个通用 js 或者 css 之类的文件,也可以使用这个模块.至于要在哪里,大家看看自己的需求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值