`
ljl_xyf
  • 浏览: 619097 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Nginx编译安装第三方模块http_substitutions_filter_module

阅读更多

1. >>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执行文件。

2. 1.下载需要的文件

substitutions4nginx github下载

  1. # 下载第三方模块
  2. # cd ~
  3. # git clone git://github.com/yaoweibin/ngx_http_substitutions_filter_module.git

3. 2.查看之前Nginx编译configure

  1. # nginx -V
  2. nginx version: nginx/1.2.7
  3. built by gcc 4.6.3(Ubuntu/Linaro4.6.3-1ubuntu5)
  4. TLS SNI support enabled
  5. 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):

  1. ./configure --prefix=/你的安装目录--add-module=/第三方模块目录

4. 3.重新编译Nginx

  1. # 打开Nginx编译目录,版本号可能不同
  2. # cd ~/lnmp1.0-full/nginx-1.2.7
  3. # 重新configure
  4. # ./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
  5. # make

备注:重新编译的时候,记得一定要把以前编译过的模块一同加到configure参数里面.

5. 4.覆盖原nginx文件

  1. # /etc/init.d/nginx stop
  2. # cd cd objs/
  3. # 覆盖原文件
  4. # cp nginx /usr/local/nginx/sbin/
  5. # /etc/init.d/nginx start

6. 5.简单配置

7. ① HttpSubModule 的 官方文档 说的很清楚,这里就不写实例了,并且功能没有substitutions4nginx的强大。

7.1. 在头部引入指定JS

  1. location /{
  2. sub_filter </head>
  3. '</head><script language="javascript" src="$script"></script>';
  4. sub_filter_types text/html;
  5. sub_filter_once on;
  6. }
  • sub_filter 一行代码前面是需要替换的内容,后面单引号内是替换成的内容。
  • sub_filter_once 意思是只查找并替换一次。on是开启此功能,off是关闭——默认值是on。
  • sub_filter_types 一行意思是选定查找替换文件类型为文本型。也可以不加此行,因为默认只查找text/html文件。
  • sub_filter模块可以用在http, server, location模块中。主要作用就是查找替换文件字符。

8. ② substitutions4nginx

8.1. subs_filter

  1. 实例:
  2. location /{
  3. subs_filter_types text/html text/css text/xml;
  4. subs_filter st(\d*).example.com $1.example.com ir;
  5. subs_filter a.example.com s.example.com;
  6. }

g(default):替换所有匹配的字符串。
i: 执行不区分大小写的匹配。
o: 只需将第一个。
r:该模式是作为一个正则表达式处理,默认是固定的字符串。

8.2. subs_filter_types

  1. syntax: subs_filter_types mime-type [mime-types]
  2. default: subs_filter_types text/html
  3. context: http, server, location
  4. subs_filter ‘<(no?script.*?)>(.*?)<(\/no?script.*?)>’ gi;//替换掉全部的<noscript></noscript>
  5. subs_filter ‘<(s?cript.*?)>(?:\s|\S)*?<(\/s?cript.*?)>’ gi;//替换掉全部的<script>包换中间换行</script>
  6. subs_filter ‘<(i?frame.*?)>(.*?)<(\/i?frame.*?)>’ gi;//替换<iframe></iframe>

9. >>参考资料<<

ngx_http_sub_module

substitutions4nginx

Nginx第三方模块

 ./configure --prefix=/alidata/server/nginx --add-module=../nginx/ngx_http_substitutions_filter_module
 

 

Installation

You need to install the sregex library first:

https://github.com/agentzh/sregex

And then rebuild your Nginx like this:

    ./configure --add-module=/path/to/replace-filter-nginx-module

If sregex is not installed to the default prefix (i.e., /usr/local), then you should specify the locations of your sregex installation via the SREGEX_INC and SREGEX_LIB environments before running the ./configure script, as in

    export SREGEX_INC=/opt/sregex/include
    export SREGEX_LIB=/opt/sregex/lib

assuming that your sregex is installed to the prefix /opt/sregex.

 

https://github.com/openresty/replace-filter-nginx-module/blob/master/README.markdown

git clone https://github.com/openresty/replace-filter-nginx-module.git

 

 ./configure --prefix=/alidata/server/nginx --add-module=../nginx/replace-filter-nginx-module


make & make install

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics