1. 目标

不用修改后端代码,但是还需要进行js 、css 等资源文件的加载
主要的场景是进行统计分析

2.技术实现

通过服务器扩展进行动态添加
iis 可以添加模块,nginx 可以使用  sub_filter,tengine 可以使用 ngx_http_footer_filter_module 
openresty 可以使用sub_filter(默认以及编译进去了) 或者 通过lua 脚本获取内容,然后修改,或者把
tengine 的模块打包进去。

3. 代码实现(基于openresty)

       location / {
root html;
index index.html index.htm;
sub_filter_once on;
sub_filter </body> '<script src="https://dn-linuxcn.qbox.me/static/js/ads.js?aR6" ></script></body>';
}
备注:对于反向代理的页面也可以进行添加

4. 效果


 5. sub_filter 参考资料

sub_filter 一行代码前面是需要替换的内容,后面单引号内是替换成的内容。 
sub_filter_once 意思是只查找并替换一次。on是开启此功能,off是关闭——默认值是on。 
sub_filter_types 一行意思是选定查找替换文件类型为文本型。也可以不加此行,因为默认只查找文本型文件。 
sub_filter模块可以用在http, server, location模块中。主要作用就是查找替换文件字符。 
比较实用的例子就是,如果我们用模板生成网站的时候,因为疏漏或者别的原因造成代码不如意,但是此时因为
文件数量巨大,不方便全部重新生成,那么这个时候我们就可以用此模块来暂时实现纠错。另一方面,我们也可
以利用这个实现服务器端文字过滤的效果,结合openresty 你可以实现更厉害的功能,可以自己发挥。

6. 延伸

结合 openresty  能够直接访问redis  memcache   mysql  在 access 阶段 、 set  阶段我们可以进行动态扩展脚本
如下,同样的功能将代码修改为一下的配置
location / {
root html;
index index.html index.htm;
sub_filter_once on;
set $userurl "";
set_by_lua_block $userurl { return [[<script src="https://dn-linuxcn.qbox.me/static/js/ads.js?aR6" ></script></body>]];
}
sub_filter </body> $userurl;
}





通过openresty && tengine && nginx 动态添加资源到 html 页面的更多相关文章

  1. Nginx动态添加模块 平滑升级

    已经安装好的Nginx动态添加模块 说明: 已经安装好的Nginx,需要添加一个未被编译安装的模块,需要怎么弄呢? 这里已安装第三方nginx-rtmp-module模块为例 nginx的模块是需要重 ...

  2. 【Nginx】如何为已安装的Nginx动态添加模块?看完我懂了!!

    写在前面 很多时候,我们根据当时的项目情况和业务需求安装完Nginx后,后续随着业务的发展,往往会给安装好的Nginx添加其他的功能模块.在为Nginx添加功能模块时,要求Nginx不停机.这就涉及到 ...

  3. 十三、给已安装的nginx动态添加模块

    给已安装的nginx动态添加模块说明:已经安装好的nginx,需要添加一个未被编译安装的模块,需要怎么弄呢?具体:这里以安装 --with-http_ssl_module模块为例nginx的模块是需要 ...

  4. 【javascript 动态添加数据到 HTML 页面】

    今天简单的学习了一下有关对象字面量的定义和 javascript 如何取出对象字面量的值的知识,javascript 动态添加数据到 HTML 页面的问题. [学习目标]有如下的一组数据通过 Ajax ...

  5. Nginx动态添加模块

    前言 有时候要使用已安装好的Nginx的功能时,突然发现缺少了对应模块,故需对其进行动态添加模块. 操作 # 查看已安装模块 [root@kazihuo ~]# nginx -V nginx vers ...

  6. 23、nginx动态添加nginx_upstream_check_module健康检查模块

    nginx_upstream_check_module模块地址:https://github.com/yaoweibin/nginx_upstream_check_module 23.1.说明: 1. ...

  7. nginx 动态添加ssl模块

    一.查看nginx模块 /usr/local/nginx/sbin/nginx -V 二.安装openssl包 yum -y install pcre  pcre-devel zlib  zlib-d ...

  8. 已安装nginx动态添加模块

    说明:已经安装好的nginx,需要添加一个未被编译安装的模块,需要怎么弄呢? 具体:这里以安装第三方ngx_http_google_filter_module模块为例nginx的模块是需要重新编译ng ...

  9. js动态添加iframe,自适应页面宽高

    function showIframe(url,w,h){ //添加iframe var if_w = w; var if_h = h; $("<iframe width='" ...

随机推荐

  1. unity屏幕坐标转世界坐标结果为(0,0,0)

    代码: wv转出来一直为(0,0,0),卡了好久,问别人说要转化的屏幕坐标Z不能为0 阿西吧!特此记录

  2. 08day03

    一.eclipse的使用 可能是全宇宙最好用的IDE debug 查看执行过程 查看源码 二.模块的常用方法 __name__ __file__ __doc__ 三.函数 参数 参数默认值 可变参数 ...

  3. vue的slot的使用问题

    slot的使用问题 根据官方文档来说,有三种使用方式 https://cn.vuejs.org/v2/guide/components.html#%E4%BD%BF%E7%94%A8%E6%8F%92 ...

  4. Ansible 1.9.0发布 来一起看看这个配置管理新贵

    Ansible 1.9.0(版本代号是Dancing In the Street,Ansible每个主要版本代号都是VanHallen乐队的一首曲子)的主要变化是: Added kerberos su ...

  5. gzip压缩解压缩

    压缩/解压缩压缩/解压缩之后的文件名称 必须是gz 解压缩

  6. 用国内镜像源pip加速安装模块

    记住,如果使用了virtualenv,一定要先workon进入虚拟环境再执行包安装命令. pip install -i https://pypi.douban.com/simple/ 模块名(如:dj ...

  7. ubuntu15.10运行android studio出错unable to run mksdcard sdk tool

    问题:ubuntu运行android studio出错unable to run mksdcard sdk tool 系统版本:系统是ubuntu 15.10 64位 确认原因:缺少lib 解决方法: ...

  8. Windows下安装tomcat

    一.Tomcat下载与安装: 1.直接到官网下载Tomcat安装程序包:http://tomcat.apache.org/ 2.下载下来后是个压缩包,如:apache-tomcat-8.0.26,解压 ...

  9. CDN推送

    一.什么是CDN推送 当后端服务器中的DNS有更新的时候,在varnish的缓存中应该及时地同步后端服务器中的内容.相当于清空varnish中的缓存,当下一次进行访问时,直接从服务器中获取新的内容. ...

  10. yii2.0 高级版 restful api使用

    1.复制任意个目录(backend)为api 2.打开api下的main.php 修改 id=>app-api,'controllerNamespace' => 'api\controll ...