• 使用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 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反向代理和内容替换模块实现网页内容动态替换功能

    实验效果截图:

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

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

    结束语:

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

     

    转载于:https://www.cnblogs.com/webenh/p/10151217.html

  • 相关阅读:
    20200305 VMware虚拟机安装及centOS
    20200303 pandas
    20200302 数据分析之numpy以及Jupyter
    Bash(Terminal)高频命令
    E117: Unkown function: vundle#installer#new
    字符串输入之%s
    结合getchar()理解缓冲区
    在HEXO主题中添加站内搜索
    字符串的全排列
    无法启动程序,系统找不到指定的文件
  • 原文地址:https://www.cnblogs.com/twodog/p/12135424.html
Copyright © 2020-2023  润新知