nginx转发 sub_filter无效的问题

最近需要转发一些被墙但是又无害的数据, 然后发现转发的数据里面(是个配置文件)还有别的被墙的域名, 所以这时候就需要用到nginxsub_filter来进行替换了, 然而发现...好像没什么用...

问题

主要问题还是因为gzip的关系, 大部分网站传输数据的时候都进行了gzip压缩, 这就导致sub_filter无法处理gzip数据最后替换失败了...

解决方案

既然gzip无法替换, 那解压缩后再替换不就好了吗?

GPT

如果您在Nginx中启用了gzip压缩,并且同时使用sub_filter模块进行内容替换,那么可能会遇到sub_filter无效的问题。这是因为gzip压缩会将响应体(response body)压缩成二进制格式,而sub_filter模块只能处理文本格式的响应体。

为了解决这个问题,您可以通过以下步骤禁用gzip压缩对于指定的请求:

  1. 在Nginx配置文件中,找到gzip相关的配置项,并添加no-gzip作为需要禁用gzip压缩的请求的正则表达式。例如:

在这个示例中,location /example中的请求将不再使用gzip压缩,并且sub_filter模块将能够正确地替换响应体中的文本内容。

  1. 重新加载Nginx配置以使更改生效:

希望这个解决方案可以帮助您解决问题。

“nginx转发 sub_filter无效的问题”的2个回复

    1. 解压什么?zip?还是rar? 不同压缩包格式不同,得用不同的工具才行

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

00:00/00:00