能否用ngx_http_sub_module在Nginx代理时替换所有"ipsum"字符串?已尝试配置未成功
可以用ngx_http_sub_module实现需求,你的配置存在几个关键问题导致失效:
问题分析
sub_filter_once重复配置:你先后设置了sub_filter_once off和sub_filter_once on,最终生效的是后者,这会导致仅替换第一个匹配的"ipsum",而非全部。sub_filter_types类型不匹配:你代理的是JS文件,GitHub返回的Content-Type是application/javascript,但你只指定了text/html,sub_module只会处理匹配该类型的响应,所以替换规则未触发。- proxy_pass路径匹配问题:当前location是
/lorem,直接proxy_pass到具体文件会导致请求路径处理异常,需调整代理目标路径。
修正后的配置示例
location /lorem { proxy_pass https://raw.githubusercontent.com/subhanahmet/lorem/main/; proxy_set_header Accept-Encoding ""; # 禁用响应压缩,确保sub_filter能处理明文内容 sub_filter_once off; # 开启全局替换所有匹配项 sub_filter_types text/html application/javascript; # 包含JS文件的Content-Type sub_filter "ipsum" "sometext"; }
额外验证步骤
执行nginx -V查看编译参数,确认已包含--with-http_sub_module,该模块默认可能未编译进Nginx。
内容的提问来源于stack exchange,提问作者Subhan Ahmet
相关产品推荐
相关产品推荐

