猛牛哥
记录网络点滴生活

【nginx】sub_filter/subs_filter替换不生效的原因和解决方案

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

赞(1) 打赏
猛牛哥原创:猛牛哥的博客 » 【nginx】sub_filter/subs_filter替换不生效的原因和解决方案

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    您好,我也遇到了替换不了的情况,请问一下这个2次反代是怎么做的,可以分享一下配置么

    ter4年前 (2021-01-02)回复
    • 第一次反代就是在正常反代配置的基础上增加一行gzip off;的设置。
      第二次反代自己第一次反代后的地址就行。

      mengniu4年前 (2021-02-23)回复

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏