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下载
# 下载第三方模块
# cd ~
# git clone git://github.com/yaoweibin/ngx_http_substitutions_filter_module.git
3. 2.查看之前Nginx编译configure
# nginx -V
nginx version: nginx/1.2.7
built by gcc 4.6.3(Ubuntu/Linaro4.6.3-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=/第三方模块目录
4. 3.重新编译Nginx
# 打开Nginx编译目录,版本号可能不同
# cd ~/lnmp1.0-full/nginx-1.2.7
# 重新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参数里面.
5. 4.覆盖原nginx文件
# /etc/init.d/nginx stop
# cd cd objs/
# 覆盖原文件
# cp nginx /usr/local/nginx/sbin/
# /etc/init.d/nginx start
6. 5.简单配置
7. ① 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模块中。主要作用就是查找替换文件字符。
8. ② substitutions4nginx
8.1. subs_filter
实例:
location /{
subs_filter_types text/html text/css text/xml;
subs_filter st(\d*).example.com $1.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>
9. >>参考资料<<
./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
相关推荐
nginx1.12.2源码、pcre-8.4.3源码、zlib-1.2.11源码包、openssl-1.0.2r源码包、echo-nginx-module-master模块源码、headers-more-nginx-module-master源码包、ngx_http_substitutions_filter_module源码包;...
**添加了http_image_filter_module模块的Nginx详解** Nginx是一款高性能的HTTP和反向代理服务器,因其高效稳定、内存占用低以及强大的负载均衡能力而被广泛应用于Web服务中。在Nginx中,模块是其核心功能的组成部分...
- **--add-module**: 添加第三方模块。 #### 三、配置Nginx.conf **3.1 编辑配置文件** 编辑`/usr/local/nginx/conf/nginx.conf`文件,进行如下配置: - **worker_processes**: 设置工作进程数量,推荐设置为CPU...
生产版nginx最新版本Dockerfile 添加主动检查nginx_upstream_check_module等第三方模块,
ngx_http_proxy_connect_module是一个针对Nginx服务器的第三方模块,主要功能是支持HTTP代理的"CONNECT"方法。在默认情况下,Nginx仅处理HTTP和HTTPS请求,但不支持通过HTTP代理进行TCP连接,比如SSL/TLS隧道。这个...
Dockerfile 编译安装nginx FROM hub.c.163.com/netease_comb/centos:7 RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel #http://nginx.org/download/nginx-1.12.2.tar.gz ADD nginx-1.12.2....
使用nginx作为http/https正向代理ipm包,包含ngx_http_proxy_connect_module 模块,附带了第三方图片代理配置,带有缓存,可直接做图片服务器 下载后执行:rpm -ivh nginx-1.12.2-1.el7_4.ngx.x86_64.rpm 打包教程:...
在Windows平台上编译Nginx并添加HTTP FLV模块是一项技术性较强的工作,涉及到网络服务器配置、编译环境搭建以及第三方模块集成等多个方面。这里我们将深入探讨如何在Windows上完成这个任务,以及与之相关的知识点。 ...
但是,原始的`upstream`模块并不具备健康检查功能,这就是`nginx_upstream_check_module`的用武之地。 ### Nginx Upstream Check Module特性 1. **健康检查**:该模块可以定期向后端服务器发送探测请求,如HTTP ...
本资源提供的是一款针对Windows平台的Nginx,其中已经集成了`nginx-http-flv-module`模块,这个模块主要用于支持HTTP实时流(HTTP Live Streaming, HLS)和Flash视频流(Flash Video, FLV)。现在我们将深入探讨这一...
nginx自带是没有针对负载均衡后端节点的健康检查的,但是可以通过默认自带的ngx_http_proxy_module 模块和ngx_http_upstream_module模块中的相关指令来完成当后端节点出现故障时,自动切换到健康节点来提供访问。
【Nginx 限制连接数 ngx_http_limit_conn_module 模块详解】 在互联网服务中,服务器经常面临流量异常、负载过大的情况,尤其在遭受大流量恶意攻击时,带宽的浪费、服务器压力的增大都会对业务造成严重影响。为了...
这里以安装第三方ngx_http_google_filter_module模块为例 nginx的模块是需要重新编译nginx,而不是像apache一样配置文件引用.so 1. 下载第三方扩展模块ngx_http_google_filter_module # cd /data/software/ # git...
nginx_tcp_proxy_module-master.zip
安装`nginx_http_push_module`通常包括以下步骤: 1. **下载源码**:获取`nginx_http_push_module`的最新版本,例如`nginx_http_push_module-0.692`。 2. **编译Nginx**:将模块源码添加到Nginx的配置文件中,然后...
下载后,在编译安装nginx时,用--add-module选项,指到sticky所在目录。类似命令如下: ./configure --prefix=/usr/local/nginx-1.6.0 --add-module=../nginx-sticky-module-1.25 --without-http_ssi_module --...
./configure --add-module=path/to/nginx_mod_h264_streaming make sudo make install ``` 3. 配置Nginx - 在Nginx的配置文件(如/etc/nginx/nginx.conf)中,添加流媒体服务器的相关配置。例如,创建一个新的...
2. **获取RTMP模块**:Nginx本身并不包含RTMP支持,你需要从第三方开发者那里获取这个模块。通常,你可以从GitHub上找到最新版本的nginx-rtmp-module。 3. **编译Nginx**:打开命令行,导航到Nginx源代码目录。使用...
官方nginx 镜像不带主动健康,本镜像将 nginx_upstream_check健康检查 打包到了镜像中。
增加了ngx_http_proxy_connect_module模块的,已经编译好的windows exe文件。 可以正向代理https请求。来源地址:https://github.com/dyq94310/nginx-build-msys2/releases 使用方法,放到从官网下的nginx windows...