本人一个nginx反代站,之前一直正常,突然有一天发现使用subs_filter模块替换的内容全部失效了。
检查站点配置文件后没发现什么异常,而且同一台服务器上的另外一个反代站点也正常。
无法找到问题的原因,就上搜索引擎查找答案吧。简单查找后基本可以确定是源站点启用了gzip压缩的原因。
有人说在配置文件的反代规则里增加proxy_set_header Accept-Encoding "";
,但我增加这行代码后问题依旧。我的判断是:源站点启用了强制gzip压缩。
nginx反代替换关键字前并不会自动解压缩,所以无法执行替换内容。因为一般浏览器都支持gzip压缩,nginx觉得收到源站内容后解压再压缩,会降低效率,所以就干脆不解压,直接把压缩内容发给浏览器了。
根据网上一位仁兄的思路,有个解决方法是在本机反代2次。第一次反代时增加gzip off;
设置项,以输出无压缩的内容,第二次反代本机地址,实现关键字替换。经实验,本方案可行。
【nginx】sub_filter/subs_filter替换不生效的原因和解决方案
2023-10-21 10:54:09
浏览数 (2)