2016年11月21日 10:30:00 xian_02 阅读数:10943
 

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 www.iptest.cn {

server 118.184.180.46:80;

}

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

server {

listen 80;

#监听端口#

server_name 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,有兴趣的可以做下实验玩玩。

 

使用Nginx反向代理和内容替换模块实现网页内容动态替换功能的更多相关文章

  1. Nginx 反向代理、后端检测模块

    简介: Nginx 反向代理模块:ngx_http_proxy_module.ngx_http_upstream_module 后端检测模块:nginx_http_upstream_check_mod ...

  2. nginx 反向代理配置(二)

    上一篇文章主要是对 nginx 各个模块做了一个介绍,以及对什么是反向代理在文章开头做了一个简单介绍,这篇文章我们主要来看下如何进行 nginx 反向代理的配置 proxy 模块      nginx ...

  3. linux运维、架构之路-Nginx反向代理

    一. Nginx负载均衡和反向代理知识 1.集群概念   一堆服务器合作做同一件事,这些机器可能需要整个技术团队架构.设计和统一协调管理,这些机器可以分布在一个机房,也可以分布在全国各个地区的多个机房 ...

  4. Centos 7.6配置nginx反向代理负载均衡集群

    一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76    nginx负载均衡器 192.168.2.82    web ...

  5. Centos 7配置nginx反向代理负载均衡集群

    一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76    nginx负载均衡器 192.168.2.82    web ...

  6. Centos 7.6配置nginx反向代理,直接yum安装

    一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76    nginx负载均衡器 192.168.2.82    web ...

  7. 正向代理 forward proxy、反向代理 reverse proxy、透明代理 transparent proxy nginx反向代理原理和配置讲解 防止外部客户机获取内部内容服务器的重定向 URL 缓存命中

    [大型网站技术实践]初级篇:借助Nginx搭建反向代理服务器 - Edison Chou - 博客园http://www.cnblogs.com/edisonchou/p/4126742.html 图 ...

  8. Nginx反向代理部署指南

    一.反向代理 我们都知道,80端口是web服务的默认端口,其他主机访问web服务器也是默认和80端口进行web交互,而一台服务器也只有一个80端口,这是约定俗成的标准. 我们来看下面两个场景: 1.服 ...

  9. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...

随机推荐

  1. python实现猜字游戏

    import randomx = random.randint(0,99)while(True): num = input("please input a number\n") i ...

  2. Ansible 插件 操作介绍

    一.Ansible 插件 之 [统计任务处理时间] 在做性能优化之前首先需要做的是收集一些统计数据,这样才能为后面做的性能优化提供数据支持,对比优化前后的结果.非常不错的是,在 github 发现一个 ...

  3. Java实验报告

    package sadsada; import java.util.Scanner; import java.util.Arrays; public class student { public st ...

  4. The 16th Zhejiang Provincial Collegiate Programming Contest Sponsored E.Sequence in the Pocket(思维题)

    传送门 题意: 给出一个序列,你可以将任意一个数移到最前面: 求最少需要移动多少次,可以是此序列变成非递减序列: 思路: 定义 (ai,aj) 为逆序对 ( i < j , ai > aj ...

  5. Redis 使用介绍-Linux-Bash

    1.进入Bash redis-cli 2.查看所有的key keys * 1.Key-Value 1.1.查看key-value值 1.2.修改key值 2.List 1> string lis ...

  6. Django 框架初步了解

    Django框架初探 1.web框架介绍 本质 socket 服务端 : 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.建立网络通信连接至少要一对端口号(s ...

  7. Python爬虫之12306-分析请求总概述

    python爬虫也学了一段时间了.也爬过不少网站,最后我想用12306抢票器这个项目做一个对之前的学习的效果成见也是一个目标(开始学爬虫的时候,看到说,会爬12306,就会爬80%的网站),本人纯自学 ...

  8. ddt源码修改:HtmlTestRunner报告依据接口名显示用例名字

    背景是这样的: 自己写了一套接口自动化的框架,其中使用unittest + ddt + excel作为数据驱动模式的应用,使用HtmlTetstRunner来生成测试用例. 一切看起来很完美. 但是, ...

  9. [工具开发] 分享两个基于Heapster 和 Influxdb 的 Grafana 监控仪表盘模板

    Info Collector: Heapster - /heapster- --metric-resolution=30s- --sink=influxdb:http://influxdb.defau ...

  10. 三种工具绘制errorbar图

    误差棒是数据可变性的图形表示,并用于图表以指示所报告的测量中的误差或不确定性.他们给出了测量精确度的一般概念,或者相反,距报告值有多远,真实(无误差)值可能是多少.误差线通常代表不确定度的一个标准偏差 ...