linux修改http响应,nginx替换网站响应内容(ngx_http_sub_module)

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

# wget http://nginx.org/download/nginx-1.4.2.tar.gz

# tar -xzvf nginx-1.4.2.tar.gz

# cd nginx-1.4.2

#  --prefix=/usr/local/nginx-1.4.2 --with-http_stub_status_module --with-http_sub_module

# make

# make install

1

2

3

4

5

6

# wget http://nginx.org/download/nginx-1.4.2.tar.gz

# tar -xzvf nginx-1.4.2.tar.gz

# cd nginx-1.4.2

#  --prefix=/usr/local/nginx-1.4.2 --with-http_stub_status_module --with-http_sub_module

# make

# make install

如果你已经安装了nginx,只需要额外追加这个模块,请看如何安装nginx第三方模块

2. 指令(Directives)

语法:     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

字符串替换一次还是多次替换,默认替换一次,例如你要替换响应内容中的ttlsa为运维生存时间,如果有多个ttlsa出现,那么只会替换第一个,如果off,那么所有的ttlsa都会 被替换

语法: sub_filter_types mime-type ...;

默认值: sub_filter_types text/html;

配置段: http, server, location

指定需要被替换的MIME类型,默认为“text/html”,如果制定为*,那么所有的

3. nginx替换字符串实例

3.1 配置

server {

listen       80;

server_name  www.ttlsa.com;

root /data/site/www.ttlsa.com;

location / {

sub_filter  ttlsa '运维生存时间';

sub_filter_types text/html;

sub_filter_once on;

}

}

1

2

3

4

5

6

7

8

9

10

11

12

server{

listen      80;

server_name www.ttlsa.com;

root/data/site/www.ttlsa.com;

location/{

sub_filter ttlsa'运维生存时间';

sub_filter_typestext/html;

sub_filter_onceon;

}

}

3.2 测试

内容如下

# cat /data/site/www.ttlsa.com/2013/10/20131001_sub1.html

welcome to tTlsa!

TTLSA TEAM!

1

2

3

# cat /data/site/www.ttlsa.com/2013/10/20131001_sub1.html

welcometotTlsa!

TTLSATEAM!

访问结果

# curl www.ttlsa.com/2013/10/20131001_sub1.html

welcome to 运维生存时间!

TTLSA TEAM!

1

2

3

# curl www.ttlsa.com/2013/10/20131001_sub1.html

welcometo运维生存时间!

TTLSATEAM!

我们可以看到它替换是不区分大小写的,而且ttlsa只被替换了一次。我把sub_filter_once on改成off试试。

location / {

sub_filter  ttlsa '运维生存时间';

sub_filter_once off;

}

1

2

3

4

location/{

sub_filter ttlsa'运维生存时间';

sub_filter_onceoff;

}

接着测试

# curl www.ttlsa.com/2013/10/20131001_sub1.html

welcome to 运维生存时间!

运维生存时间 TEAM!

1

2

3

# curl www.ttlsa.com/2013/10/20131001_sub1.html

welcometo运维生存时间!

运维生存时间TEAM!

我们可以看到ttlsa都被替换掉了.

例如你想在后追加一段js,配置如下:

location / {

sub_filter      '';

sub_filter_once on;

}

1

2

3

4

location/{

sub_filter     '';

sub_filter_onceon;

}

这边我就不再做测试了,大家可以测试一下.

4. 结束语

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

转载请注明来至运维生存时间:http://www.ttlsa.com/html/3289.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值