Nginx编译安装第三方模块http_substitutions_filter_module
- Nginx编译安装第三方模块http_substitutions_filter_module
- 分类:服务器技术 作者:rming 时间:--
- . >>ngx_http_substitutions_filter_module OR HttpSubModule ?
- 为了应急处理或者一些需要,有时候需要使用Nginx的反向代理某站点,并通过 HttpSubModule 和ngx_http_substitutions_filter_module 模块替换正文内容和URL。
- 但是通常LNMP套件安装的webserver并没有编译安装nginx官方模块HttpSubModule(官方option),并且,官方自带的模块HttpSubModule 只能匹配1条规则,但是使用第三方模块ngx_http_substitutions_filter_module 可以匹配多条规则。
- 备注:
- ngx_http_substitutions_filter_module 是指第三方nginx模块 substitutions4nginx (原:Google Code 现:github)
- HttpSubModule 是指Nginx官方的 with-http_sub_module模块(option)
- Nginx自身带的module并不多,这也是它为什么性能好,系统开销较小的原因之一,相比apache,它不能动态的加载module,如果之前编译安装了Nginx,这时候就需要重新编译nginx添加模块,并替换掉原先的nginx执行文件。
- . .下载需要的文件
- substitutions4nginx github下载
- # 下载第三方模块
- # cd ~
- # git clone git://github.com/yaoweibin/ngx_http_substitutions_filter_module.git
- . .查看之前Nginx编译configure
- # nginx -V
- nginx version: nginx/1.2.
- built by gcc 4.6. (Ubuntu/Linaro 4.6.-1ubuntu5)
- TLS SNI support enabled
- configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with- http_ssl_module --with-http_gzip_static_module --with-ipv6
- 因为Nginx编译安装第三方模块的时候需要添加上之前编译的configure参数,然后重新设置configure编译(但是不覆盖安装,只make不install):
- ./configure --prefix=/你的安装目录 --add-module=/第三方模块目录
- . .重新编译Nginx
- # 打开Nginx编译目录,版本号可能不同
- # cd ~/lnmp1.-full/nginx-1.2.
- # 重新configure
- # ./configure --prefix= --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --add-module=/root/ngx_http_substitutions_filter_module
- # make
- 备注:重新编译的时候,记得一定要把以前编译过的模块一同加到configure参数里面.
- . .覆盖原nginx文件
- # /etc/init.d/nginx stop
- # cd cd objs/
- # 覆盖原文件
- # cp nginx /usr/local/nginx/sbin/
- # /etc/init.d/nginx start
- . .简单配置
- . ① HttpSubModule 的 官方文档 说的很清楚,这里就不写实例了,并且功能没有substitutions4nginx的强大。
- 7.1. 在头部引入指定JS
- location / {
- sub_filter </head>
- '</head><script language="javascript" src="$script"></script>';
- sub_filter_types text/html;
- sub_filter_once on;
- }
- sub_filter 一行代码前面是需要替换的内容,后面单引号内是替换成的内容。
- sub_filter_once 意思是只查找并替换一次。on是开启此功能,off是关闭——默认值是on。
- sub_filter_types 一行意思是选定查找替换文件类型为文本型。也可以不加此行,因为默认只查找text/html文件。
- sub_filter模块可以用在http, server, location模块中。主要作用就是查找替换文件字符。
- . ② substitutions4nginx
- 8.1. subs_filter
- 实例:
- location / {
- subs_filter_types text/html text/css text/xml;
- subs_filter st(\d*).example.com $.example.com ir;
- subs_filter a.example.com s.example.com;
- }
- g(default):替换所有匹配的字符串。
- i: 执行不区分大小写的匹配。
- o: 只需将第一个。
- r:该模式是作为一个正则表达式处理,默认是固定的字符串。
- 8.2. subs_filter_types
- syntax: subs_filter_types mime-type [mime-types]
- default: subs_filter_types text/html
- context: http, server, location
- subs_filter ‘<(no?script.*?)>(.*?)<(\/no?script.*?)>’ ” gi; //替换掉全部的<noscript></noscript>
- subs_filter ‘<(s?cript.*?)>(?:\s|\S)*?<(\/s?cript.*?)>’ ” gi; //替换掉全部的<script>包换中间换行</script>
- subs_filter ‘<(i?frame.*?)>(.*?)<(\/i?frame.*?)>’ ” gi; //替换<iframe></iframe>
- . >>参考资料<<
- ngx_http_sub_module
- substitutions4nginx
- Nginx第三方模块
- PHP使用header函数设置HTTP头的示例方法
- 使用Git来部署一个Web站点笔记
- zytsezytse
- January 19th, at : pm
- 请问如何替换汉字呢?比如“中国”替换成“世界”
- 回复
- 海天海天
- April 3rd, at : am
- 博主你好,我使用你文章中说的方法,修改了网站的conf文件后也没有报错
- 但是替换一个网站中的google的ajax文件却一直不成功,麻烦你帮我看看
- 我使用的http://ps.haoyingyu.net反向代理了http://ourdiscoveryisland.com/
- conf配置是
- server
- {
- listen ;
- server_name ps.haoyingyu.net;
- location / { sub_filter ajax.googleapis.com/ajax/libs/jquery/1.7./jquery.min.js libs.baidu.com/jquery/1.7./jquery.min.js; sub_filter_once off; proxy_pass http://ourdiscoveryisland.com/; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
- }
Nginx编译安装第三方模块http_substitutions_filter_module的更多相关文章
- Nginx编译安装第三方模块http_substitutions_filter_module2222
Nginx编译安装第三方模块http_substitutions_filter_module Rming -- 阅读 安装 Http 编译 module filter nginx 模块 >> ...
- nginx编译安装新模块
nginx的模块是需要重新编译nginx,而不是像apache一样配置文件引用.so 这里以安装第三方ngx_http_google_filter_module模块为例 下载第三方扩展模块ngx_ht ...
- nginx如何安装第三方模块
以安装pagespeed为实例 在未安装nginx的情况下安装nginx第三方模块 # ./configure --prefix=/usr/local/nginx-1.4.1 \ --with-htt ...
- nginx dockerfile安装第三方模块
# nginx Dockerfile # Version 1.0 # author fendo # Base images 基础镜像 FROM centos:centos7 #FROM hub.c.. ...
- nginx编译安装配置模块大全
使用configure命令配置构建.它定义了系统的各个方面,包括允许nginx用于连接处理的方法.最后,它会创建一个Makefile.该configure命令支持以下参数:--help 打印帮助信息. ...
- Nginx编译安装lua-nginx-module
lua-nginx-module 模块可以将Lua的强大功能嵌入NGINX服务器. 下载Nginx源码 如果已安装Nginx,需要查看当前安装版本的编译参数: $ /usr/local/nginx/s ...
- 原已经安装好的nginx,现在需要添加一个未被编译安装的模块--echo-nginx-module-0.56
为了测试一个NGINX变量,将NGINX加了一个编译模板echo-nginx-module-0.56. 参照如下文件 1,先看以前NGINX有哪些东东. sbin/nginx -Vnginx vers ...
- nginx安装第三方模块
原已经安装好的nginx,现在需要添加一个未被编译安装的模块 举例说明:安装第三方的ngx_cache_purge模块(用于清除指定URL的缓存) nginx的模块是需要重新编译nginx,而不是像a ...
- nginx 安装第三方 模块
查看nginx在安装时开启了哪些模块 如果你nginx是rpm包安装的,直接用如下命令nginx -V 如果你是源码包编译安装,假如你的安装路径是/usr/local/nginx,那么你可以使用: / ...
随机推荐
- POJ 2932 Coneology(扫描线)
[题目链接] http://poj.org/problem?id=2932 [题目大意] 给出N个两两没有公共点的圆,求所有不包含于其它圆内部的圆 [题解] 我们计算出所有点在圆心所有y位置的x值, ...
- [CF468D]Tree
[CF468D]Tree 题目大意: 一棵\(n(n\le10^5)\)个编号为\(1\sim n\)的点的带边权的树,求一个排列\(p_{1\sim n}\),使\(\sum dis(i,p_i ...
- 在MEF中手动导入依赖的模块
对于简单的场景来讲,在MEF中导入依赖模块非常简单,只要用ImportAttribute标记依赖的成员,MEF模块会自动找到并创建该模块.但有的时候我们依赖的模块是上下文相关的,此时MEF框架的自动组 ...
- 利用LogParser分析IIS日志
LogParser是微软官方出品的用于读取分析IIS日志的工具,使用类SQL语句过滤文本日志内容,并可将内容导出到csv.sqlserver作进一步分析 下载地址:http://www.micr ...
- 疑似checkpoint堵塞数据库连接
注:这个说法是不成立的,问题已经解决,但是无法正确的定位到具体什么原因:[20140702]奇怪的应用程序超时 背景: 开发通过应用程序的日志发现间歇性的出现,数据库连接超时 原因: 只能大概猜测,没 ...
- easyui datagrid checkbox的相关属性整理
DataGrid其中与选择,勾选相关 DataGrid属性: singleSelect boolean 如果为true,则只允许选择一行. false ctrlSelect boolean 在启用多行 ...
- asp.net权限控制的方式
我们在使用asp.net开发Web程序的时候经常需要进行一些权限控制,如: 限制用户没有登陆就无法查看一些页面,又或者是说登陆之后如果不是管理员,或是没有响应的权限就无法进行相关的操作. 实现的方法有 ...
- android: android中dip、dp、px、sp和屏幕密度
android中dip.dp.px.sp和屏幕密度 转自:http://www.cnblogs.com/fbsk/archive/2011/10/17/2215539.html 1. dip: dev ...
- Mycat探索之旅(4)----Mycat的自增长主键和返回生成主键ID的实现
说明:MyCAT自增长主键和返回生成主键ID的实现 1) mysql本身对非自增长主键,使用last_insert_id()是不会返回结果的,只会返回0:这里做一个简单的测试 创建测试表 ------ ...
- HDU 1560 IDA*搜索
用N个串中找到最短的公共串(不要求连续,仅仅要相对位置一样就可以) 迭代加深搜索就可以 剪枝:当前的深度+最少还有加深的深度是否大于限制的长度,若是,则退回. #include "stdio ...