目录
sub_filter模块为nginx官方自带的模块,功能为替换掉返回给客户端数据的指定内容。需要使用该功能时只需要在编译时添加对该模块的支持,便会编译到nginx的内核。但是sub_filter的缺点之一是只支持配置一个sub_filter替换。
sub_filter语法包括:
sub_filter_types:*; 需要替换的类型,如text/htnl text/plain application/ javascript等,以空格分隔
sub_filter_once: on/off; 是否只替换一次
sub_filter: xxx1 xxx2; 前面的参数为原始内容,后面的参数为替换后的内容
这个模块已经内置在nginx中,但是默认未安装,需要安装需要加上配置参数:--with-http_sub_module 如果已经安装nginx,只需要再添加这个模块就可以了。
先查看原有nginx的配置参数并拷贝出来
/usr/local/nginx/sbin/nginx -V
[admin@test ~]$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.20.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module
解压nginx源码包(以前安装时的源码包),如果已经删除了课重新下载,版本相同即可
tar zxvf nginx-1.20.2.tar.gz
切换到nginx-1.20.1目录下
cd nginx-1.20.1
重新配置configure参数:注意带上原来已经安装的模块
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_sub_module --with-http_ssl_module
然后make编译一下,注意不要make install,不然会覆盖你的nginx目录,就完蛋了
make
编译完成的文件在nginx-1.20.1/objs目录下的下
把nginx服务先关掉
/usr/local/nginx/sbin/nginx -s stop
备份原来的nginx可执行文件
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak
将编译好的nginx复制到原始nginx的sbin目录
cp ./objs/nginx /usr/local/nginx/sbin
到这里已经安装完毕,可以再执行/usr/local/nginx/sbin/nginx -V查看一下nginx的模块情况
[root@test nginx-1.20.2]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.20.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_sub_module --with-http_ssl_module
重新启动nginx服务
/usr/local/nginx/sbin/nginx