Nginx竟然不支持sub_filter

1、sub_filter

1.1、概述

sub_filter是 Nginx 中的一个指令,用于在 Nginx 响应内容中进行字符串替换。它主要用于对后端服务器返回的 HTML、CSS、JavaScript 等文本类型的内容进行修改,这在很多场景下非常有用,比如修改页面中的链接、替换文本内容等。

1.2、配置项

sub_filter的基本语法是sub_filter string replacement;,其中string是要被替换的原始字符串,replacement是替换后的字符串;

sub_filter_types:*; 配置用于指定需要替换的类型,如text/html text/plain application/javascript等,以空格分隔;

sub_filter_once off;配置可以用来指定是否只进行一次替换。默认值是off,即会替换所有匹配的字符串;如果设置为on,则只替换第一次匹配到的字符串;

1.3、示例


dart

代码解读

复制代码

location /webapi.amap.com/ { set $proxyip "主机IP:主机Port"; proxy_set_header Accept-Encoding ""; proxy_pass http://webapi.amap.com/; sub_filter_types *; sub_filter_once off; sub_filter 'webapi.amap.com' '$proxyip/webapi.amap.com'; sub_filter 'vdata.amap.com' '$proxyip/vdata.amap.com'; sub_filter 'restapi.amap.com' '$proxyip/restapi.amap.com'; sub_filter 'vdata0{1,2,3,4}.amap.com' '$proxyip/vdata0{1,2,3,4}.amap.com'; sub_filter '{vdata,vdata01,vdata02,vdata03,vdata04}.amap.com' '$proxyip/{vdata,vdata01,vdata02,vdata03,vdata04}.amap.com'; sub_filter 'wprd0{1,2,3,4}.is.autonavi.com' '$proxyip/wprd0{1,2,3,4}.is.autonavi.com'; sub_filter 'webrd0{1,2,3,4}.is.autonavi.com' '$proxyip/wprd0{1,2,3,4}.is.autonavi.com'; sub_filter 'https' 'http'; }

2、Nginx配置sub_filter

这个功能已经内置在nginx中,但是默认未安装,如果需要,安装配置时要加上配置参数:--with-http_sub_module ,如果已经安装nginx,需要再添加这个模块就可以了,该章节演示如何在已有的Nginx新增该配置。

如果未配置该模块,则会报错:


sql

代码解读

复制代码

nginx: [emerg] unknown directive "sub_filter_types"

2.1、查看当前配置

查看当前配置:


bash

代码解读

复制代码

# 切到sbin文件夹 cd /gis/nginx/sbin/ # 查看配置 ./nginx -V

输出:


ini

代码解读

复制代码

nginx version: nginx/1.26.2 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) configure arguments: --prefix=/gis/nginx

2.2、修改配置

进入原来的nginx源码包,如果已经删除了可以重新下载,版本相同即可。


ini

代码解读

复制代码

# 进入安装包解压目录,执行配置命令 ./configure --prefix='/gis/nginx' --with-http_sub_module

输出:


dart

代码解读

复制代码

checking for OS + Linux 4.19.12-1.el7.elrepo.x86_64 x86_64 checking for C compiler ... found + using GNU C compiler + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) checking for gcc -pipe switch ... found checking for -Wl,-E switch ... found checking for gcc builtin atomic operations ... found ... ... checking for PCRE2 library ... not found checking for PCRE library ... found checking for PCRE JIT support ... found checking for zlib library ... found creating objs/Makefile Configuration summary + using system PCRE library + OpenSSL library is not used + using system zlib library nginx path prefix: "/gis/nginx" nginx binary file: "/gis/nginx/sbin/nginx" nginx modules path: "/gis/nginx/modules" nginx configuration prefix: "/gis/nginx/conf" nginx configuration file: "/gis/nginx/conf/nginx.conf" nginx pid file: "/gis/nginx/logs/nginx.pid" nginx error log file: "/gis/nginx/logs/error.log" nginx http access log file: "/gis/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp

2.3、重新编译

注意不要make install,不然会覆盖你的nginx目录


bash

代码解读

复制代码

# 编译命令 make

输出:


vbnet

代码解读

复制代码

make -f objs/Makefile make[1]: Entering directory `/gis/nginx-1.26.2-source' cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \ -o objs/src/core/nginx.o \ src/core/nginx.c ... ... objs/ngx_modules.o \ -ldl -lpthread -lcrypt -lpcre -lz \ -Wl,-E sed -e "s|%%PREFIX%%|/gis/nginx|" \ -e "s|%%PID_PATH%%|/gis/nginx/logs/nginx.pid|" \ -e "s|%%CONF_PATH%%|/gis/nginx/conf/nginx.conf|" \ -e "s|%%ERROR_LOG_PATH%%|/gis/nginx/logs/error.log|" \ < man/nginx.8 > objs/nginx.8 make[1]: Leaving directory `/gis/nginx-1.26.2-source'

2.4、替换新编译的文件


bash

代码解读

复制代码

# 先停止原有服务 cd /gis/nginx/sbin/ ./nginx -s stop # 备份原文件 mv nginx nginx_bak # 将新编译的文件复制过来 cp /gis/nginx-1.26.2-source/objs/nginx .

2.5、测试配置


bash

代码解读

复制代码

./nginx -V

输出:


javascript

代码解读

复制代码

nginx version: nginx/1.26.2 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) configure arguments: --prefix=/gis/nginx --with-http_sub_module

可以看到配置已经增加了--with-http_sub_module

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值