[root@MyServer ~]# wget -O ngx_http_substitutions_filter_module-master.zip https://github.com/yaoweibin/ngx_http_substitutions_filter_module/archive/master.zip
[root@MyServer ~]# unzip ngx_http_substitutions_filter_module-master.zip
[root@MyServer ~]# cd ngx_http_substitutions_filter_module-master && pwd
/root/ngx_http_substitutions_filter_module-master
(2)服务器上执行nginx -V 查看编译参数[root@MyServer ~]# /usr/local/nginx/sbin/nginx -V
Tengine version: Tengine/2.1.2 (nginx/1.6.2)
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --add-module=../ngx_cache_purge-2.3 --with-http_sub_module
(3)加上模块参数,重新编译nginx./configure [+原有参数+] --add-module=/root/ngx_http_substitutions_filter_module-master/
(4)平滑升级nginx
参考这篇文章,我没有尝试过所以不写。
这里我在第2步编译的时候卡壳了,我当时是apt-get install nginx安装的nginx……版本是nginx/1.12.1,我的编译参数是:--with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-file-aio --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_secure_link_module --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_realip_module --with-stream_geoip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-mail=dynamic --with-mail_ssl_module --add-dynamic-module=/usr/src/builddir/debian/modules/nginx-auth-pam --add-module=/usr/src/builddir/debian/modules/nginx-dav-ext-module --add-module=/usr/src/builddir/debian/modules/nginx-echo --add-module=/usr/src/builddir/debian/modules/nginx-upstream-fair --add-module=/usr/src/builddir/debian/modules/ngx_http_substitutions_filter_module --add-module=/usr/src/builddir/debian/modules/nginx-cache-purge
然后按照教程做了后报错:./configure: error: no /usr/src/builddir/debian/modules/nginx-dav-ext-module/config was found
用which,whereis也找不到这个叫nginx-dav-ext-module的插件,于是乎我开始准备一个一个查找这些--add-module增加的插件是否有用,每想到找着找着找到了这个:--add-module=/usr/src/builddir/debian/modules/ngx_http_substitutions_filter_module
呀,这不是我们要加的插件吗,原来在这个版本已经集成了,那就不用那么麻烦升级了……于是跳过了所有的步骤……进入使用阶段。
2、配置nginx,替换字符串。
用法说明:* subs_filter_types
subs_filter_types 语法: subs_filter_types mime-type [mime-types]
默认: subs_filter_types text/html
适用: http, server, location
subs_filter_types 是用来指定替换文件类型的 默认仅仅替换text/html类型的文件。
* subs_filter
subs_filter 语法: subs_filter source_str destination_str [gior]
默认: none
适用: http,server,location
subs_filter 是用来替换文本的,可以使用正则
g(默认):替换匹配项。
i :区分大小写的匹配
o : 只匹配发现的第一个。
r : 正则匹配(默认是字符串匹配)。
于是在ngxin的xxx.conf下,配置我的cdn:subs_filter http://www.bewindoweb.cn/([^"\']*?)\.(jpg|png|js|css|jpeg|bmp|gif) http://cdn.bewindoweb.cn/$1.$2 igr;
这里注意,我对php进行了php-fpm的配置,所以在location /下配置这一句是无效的,要在location php的下面才有效哦。
最后的效果: