• 欢迎访问爱乐网,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入爱乐网的大家庭
  • 如果您觉得爱乐网非常符合您的胃口,那么赶紧使用Ctrl+D 将爱乐网加入浏览器收藏夹吧

使用Nginx反向代理和内容替换模块实现网页内容动态替换功能

互联网 爱乐网 2年前 (2016-10-21) 4261次浏览 1个评论 扫描二维码

使用 Nginx 反向代理和内容替换模块实现网页内容动态替换功能

Nginx是一款轻量级高性能服务器软件,虽然轻量,但功能非常强大,可用于提供 WEB 服务、反向代理、负载均衡、缓存服务、甚至可以通过添加一些模块搭建 rtmp流媒体服务。最近碰到一个客户需求,需要用到 nginx 网页内容替换模块,以下是相关实验记录,贴出来跟大家交流,如有不足之处请指出。

ngx_http_sub_module 模块是一个过滤器,它修改网站响应内容中的字符串。这个模块已经内置在 nginx 中,但是默认未安装,需要安装需要加上配置参数:–with-http_sub_module 如果已经安装 nginx,只需要再添加这个模块就可以了。

一、安装:

nginx 官网下载安装包:http://nginx.org/en/download.html

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

# tar -zxvf nginx-1.11.5.tar.gz

# cd nginx-1.11.5

# ./configure –with-http_stub_status_module –with-http_sub_module && make && make install

二、常用指令:

2.1 sub_filter 指令: sub_filter string(原字符串) replacement(用于替换的字符串);

用于设置需要使用说明字符串替换说明字符串.string 是要被替换的字符串,replacement 是 新的字符串,它里面可以带变量。

2.2 sub_filter_last_modified 指令: sub_filter_last_modified on | off;

用于设置网页内替换后是否修改 可在 nginx.conf 的 http, server, location 三个位置配置使 用,默认值是 off;

2.3 sub_filter_once 指令:sub_filter_once on | off;

用于设置字符串替换次数,默认只替换一次。如果是 on,默认只替换第一次匹配到的到字 符,如果是 off,那么所有匹配到的字符都会被替换;

2.4 sub_filter_types 指令:sub_filter_types *

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

说明:以上指令可在 nginx.conf 的 http, server, location 三个位置配置使用;

三、反向代理动态替换网页内容实例参考:

upstream http://www.iptest.cn {

server 118.184.180.46:80;

}

#反向代理,如果有多个服务端 ip,还可以添加负载均衡方式,权重等策略#

server {

listen 80;

#监听端口#

server_name http://www.iptest.cn;

#设置 server name#

charset utf-8;

#设置字符编码为 utf-8,可根据实际情况调整#

location / {

proxy_pass http://www.iptest.cn$request_uri;

#反向代理规则#

proxy_set_header Accept-Encoding deflate;

#设置反向代理头部,有时候源站响应的是gzip格式,替换的时候会有问题,可通过此项解决#

subs_filter ‘183.251.160.127’ ‘123.181.128.17’;

#替换指定 ip,此处将 183.251.160.127 替换成 123.181.128.17#

subs_filter ‘福建省龙岩市 移动’ ‘河北省唐山市 电信’;

#替换城市、运营商信息,nginx 此替换模块支持中文替换#

subs_filter_types text/html;

#指定被替换的 MIME 类型#

sub_filter_once on;

#指定字符串替换次数,on 表示只替换第一次匹配到的字符,off 表示替换所有匹配到的字符#

}

}

说明:

1、此模块替换不区分大小写;

2、支持中文替换;

Nginx.conf 完整配置:

实验效果截图:

结束语:

另外一个类似的内容替换模块 nginx_substitutions_filter,有兴趣的可以做下实验玩玩。


爱乐网(http://aile.so) , 版权所有丨如未注明 , 均为原创丨爱乐网采用BY-NC-SA协议进行授权 , 转载请注明:使用 Nginx 反向代理和内容替换模块实现网页内容动态替换功能
爱乐网淘券特价商品推荐
喜欢 (1)
[]
分享 (0)
爱乐网
关于作者:
爱乐网,专注互联网最新科技资讯分享,汇集各种软件教程、游戏攻略,为用户收集整理各类破解软件、正版软件、小工具的软件下载网站,永久网址:http://aile.so
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到
(1)个小伙伴在吐槽
  1. 替换2个以上就报错,怎么破
    匿名2017-05-24 09:59 回复 Linux | Chrome 40.0.2214.89