nginx中http_sub_module模块(替换网站响应内容)

简介:

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


1. 安装nginx

# 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;  

    }  


3.2 测试

内容如下

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

welcome to tTlsa!  

TTLSA TEAM! 


访问结果

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

welcome to 运维生存时间!  

TTLSA TEAM! 


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

location / {  

    sub_filter  ttlsa '运维生存时间';  

    sub_filter_once off;  


接着测试

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

welcome to 运维生存时间!  

运维生存时间 TEAM! 


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


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

location / { 

    sub_filter      </head> '</head><script language="javascript" src="$script"></script>';  

    sub_filter_once on;  

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


4. 结束语

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


本文转自  亮公子  51CTO博客,原文链接:http://blog.51cto.com/iyull/1864380
相关文章
|
9月前
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
888 130
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
966 90
|
JSON API 网络架构
HTTP常见的请求方法、响应状态码、接口规范介绍
本文详细介绍了HTTP常见的请求方法、响应状态码和接口规范。通过理解和掌握这些内容,开发者可以更好地设计和实现W
2449 83
|
10月前
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
11月前
|
缓存 JavaScript 前端开发
Vue 3 HTTP请求封装导致响应结果无法在浏览器中获取,尽管实际请求已成功。
通过逐项检查和调试,最终可以定位问题所在,修复后便能正常在浏览器中获取响应结果。
395 0
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
1110 20
|
JavaScript 前端开发 开发者
Node学习笔记:HTTP模块
总的来说,Node.js的HTTP模块是一个强大的工具,可以帮助你处理HTTP协议的各种需求。无论你是想开设自己的餐厅(创建服务器),还是想去别的餐厅点菜(发出请求),HTTP模块都能满足你的需求。
382 18
|
API 数据安全/隐私保护
Haskell中的HTTP请求:代理与响应状态检查
Haskell中的HTTP请求:代理与响应状态检查
251 13
|
缓存 负载均衡 应用服务中间件
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇
通过使用Nginx的反向代理功能,可以有效地提高Web应用的性能、安全性和可扩展性。配置过程中需要注意不同场景下的具体需求,如负载均衡、SSL终止和缓存策略等。正确配置和优化Nginx反向代理可以显著提升系统的整体表现。
2371 20
|
负载均衡 Ubuntu 应用服务中间件
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
2158 13