nginx使用replace-filter-nginx-module模块正则替换

nginx反代,要实现内容替换,sub_filter功能有限,而且不支持正则匹配;本来开始是使用ngx_http_substitutions_filter,发现怎么都不起作用,也不知道是哪里问题。后来找到一个更加强大的替换模块:replace-filter-nginx-module

GitHub地址:https://github.com/openresty/replace-filter-nginx-module

安装此模块需要先安装sregex运行库。

cd /www/server/nginx/src
git clone https://github.com/agentzh/sregex
cd sregex
make
make install

安装 replace-filter-nginx-module

cd /www/server/nginx/src
git clone https://github.com/agentzh/replace-filter-nginx-module

nginx -V查看,添加replace-filter-nginx-module编译:

./configure --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --add-module=/www/server/nginx/src/ngx_http_substitutions_filter_module-master --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --with-http_secure_link_module --add-module=/www/server/nginx/src/replace-filter-nginx-module

安装之后,替换nginx

make
cp /www/server/nginx/sbin/nginx /www/server/nginx/sbin/nginx.bak
nginx -s stop
cp /www/server/nginx/src/objs/nginx /www/server/nginx/sbin/nginx
service nginx restart

重启nginx的时候发现报错了:

error while loading shared libraries: libsregex.so.0: cannot open shared object file: No such file or directory

查看时哪里的问题:

ldd $(which /www/server/nginx/sbin/nginx)

发现 libsregex.so.0 => not found,nginx只从/lib/x86_64-linux-gn路径下寻找,那么我们将类库直接复制过去就行:

cp /www/server/nginx/src/sregex/libsregex.so.0 /lib/x86_64-linux-gnu

再次重启nginx,就没问题了:

service nginx restart

查看nginx -V,确认模块安装成功。

关于replace-filter-nginx-module正则替换规则,可以参看GitHub说明。

本文链接: https://www.168itw.com/suibi/nginx-eplace-filter-nginx-module/
转载请注明转载自:168itw