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

 更新时间:2024年10月05日 15:38:32   作者:狂野小青年  
Nginx是一款轻量级高性能服务器软件,虽然轻量,但功能非常强大,可用于提供WEB服务、反向代理、负载均衡、缓存服务、甚至可以通过添加一些模块搭建rtmp流媒体服务,最近碰到一个客户需求,需要用到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

常用指令

sub_filter指令

sub_filter string(原字符串) replacement(用于替换的字符串);

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

sub_filter_last_modified指令

sub_filter_last_modified on | off;

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

sub_filter_once指令

sub_filter_once on | off;

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

sub_filter_types指令

sub_filter_types *

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

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

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

server {
        listen       80;
        server_name  mikecrm.xianzhixiong.com;
 
        # 上传文件大小限制
        client_max_body_size 20M;
        # 设置为on表示启动高效传输文件的模式
        sendfile on;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
        #access_log  logs/host.access.log  main;
 
        location / {
            #root   html;
            #index  index.html index.htm;
            proxy_pass   http://mikecrm.com;
            proxy_set_header Host mikecrm.com;
            proxy_set_header Referer http://mikecrm.com;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            #proxy_request_buffering off;
            proxy_set_header Accept-Encoding "";
            sub_filter_types *;
            sub_filter_once off;
            #sub_filter_last_modified on;
            sub_filter 'cdnq2.mikecrm.com' 'mikecrm.xianzhixiong.com';
            sub_filter 'cdnq3.mikecrm.com' 'mikecrm.xianzhixiong.com';
            sub_filter 'https://cdnq2plt.mikecrm.com' 'http://mikecrm.xianzhixiong.com';
            sub_filter 'https://cdnq3plt.mikecrm.com' 'http://mikecrm.xianzhixiong.com';
            sub_filter 'http://dlcn.mikecrm.com' '';
            sub_filter 'http://mikecrm.com' '';
            sub_filter 'https://mikecrm.com' '';
            sub_filter 'www.mikecrm.com' 'mikecrm.xianzhixiong.com';
            #sub_filter '.mikecrm.com' 'mikecrm.xianzhixiong.com';
            #sub_filter 'mikecrm.com' 'mikecrm.xianzhixiong.com';
        }
        #location ~ \.php$ {
           # proxy_pass   https://real.mikecrm.com;
        #}
        #location ~ /plt.js$ {
           # proxy_pass   https://cdnq3plt.mikecrm.com;
        #}
 
}

参数解释

注意只有在新版本nginx中才支持多sub_filter.

proxy_set_header Accept-Encoding "";  
设置这个得原因是:告诉后端不要进行gzip压缩.  如果是gzip压缩流, 那么我们就没法进行替换了.

sub_filter_types *;  
对所有请求响应类型都做sub_filter指定的替换.

sub_filter_once off;
sub_filter会执行多次而不是一次. 效果类似于java中的string.replaceAll而不是replace.

sub_filter 'str1'  'str2';
替换字符串,str1是搜索的字符串,str2是最终被替换成的字符串

总结

到此这篇关于Nginx反向代理和内容替换模块实现网页内容动态替换功能的文章就介绍到这了,更多相关Nginx反向代理替换网页字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx出现504 Gateway Time-out的解决方法

    Nginx出现504 Gateway Time-out的解决方法

    nginx访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,本文就来介绍一下解决方法,感兴趣的可以了解一下
    2023-10-10
  • 利用Nginx代理如何解决前端跨域问题详析

    利用Nginx代理如何解决前端跨域问题详析

    这篇文章主要给大家介绍了关于利用Nginx代理如何解决前端跨域问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • nginx访问控制的两种方法

    nginx访问控制的两种方法

    这篇文章主要介绍了关于nginx访问控制的两种方法,一种是基于Basic Auth认证,另一种是基于IP的访问控制,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • 详解阿里云LINUX服务器配置HTTPS(NGINX)

    详解阿里云LINUX服务器配置HTTPS(NGINX)

    本篇文章主要介绍了阿里云LINUX服务器配置HTTPS(NGINX) ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Windows下Nginx安装配置教程

    Windows下Nginx安装配置教程

    这篇文章主要为大家介绍了Windows下Nginx安装配置的详细教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Nginx配置及热升级的详细介绍

    Nginx配置及热升级的详细介绍

    Nginx与Apache一样,都是web服务器,但是Nginx比Apache多一些功能,比如Nginx可以做代理,可以做负载均衡,这篇文章主要介绍了Nginx配置以及热升级,需要的朋友可以参考下
    2024-07-07
  • Nginx如何自动封禁可疑Ip

    Nginx如何自动封禁可疑Ip

    这篇文章主要介绍了Nginx如何自动封禁可疑Ip问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • 通过Nginx实现前端与后端的协同部署

    通过Nginx实现前端与后端的协同部署

    在现代 web 开发中,前端与后端的协同部署是一个关键问题,一个高效的部署策略不仅能提升用户体验,还能简化开发流程,今天,我们就来探讨如何利用 Nginx 实现前端与后端的协同部署,需要的朋友可以参考下
    2025-03-03
  • Nginx安全防护的多种方法

    Nginx安全防护的多种方法

    在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下
    2025-07-07
  • Nginx更改conf配置文件的代码详解

    Nginx更改conf配置文件的代码详解

    本文主要介绍了Nginx如何更改conf配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作有一定的参考学习价值,需要的朋友们下面跟着小编来一起来学习吧
    2024-02-02

最新评论