0

我一直在努力解决在 Apache 配置中使用过滤器的问题。使用的服务器运行 CentOS 7。可用的 Apache 版本是 2.4.6

我已经使用文档中的示例进行了很多测试。像这样:

http.conf:

LuaOutputFilter myOutputFilter  /var/www/html/filter.lua output_filter
<Files "*.mpd">
  SetOutputFilter myOutputFilter
</Files>


Lua script:

function output_filter(r)
        coroutine.yield("(test1)<br/>\n")

      while bucket do                 
        local output = string.gsub(bucket,"%s-<!%-- Play %-->%c%s.<Cont.-%s-<%/Cont>" , "")
        coroutine.yield(output)
      end
 end

这工作正常。但是有一个问题:这个过滤器从输出中删除了几行,因此发送给客户端的内容大小不正确。似乎内容长度没有改变,并且在输出中附加了一些不需要的字符。在使用较新 Apache 版本的实验室环境中尝试此操作时,它可以正常工作。

我在尝试寻找解决方案时发现了这一点:

mod_lua:在运行我的 mod_filter 时,将 LuaOutputFilter 脚本注册为默认更改内容和内容长度。以前,增长或缩小以 Content-Length 集开始的响应需要 mod_filter 和 FilterProtocol change=yes。[Eric Covener] 注意:2.4.7 更改中不存在

我已经尝试了很多,但无法使其工作。我也尝试通过使用本机 Apache mod_substitute 来解决这个问题,但它不起作用,因为我试图删除的内容分布在多行以响应来自服务器的响应。

我的问题是:是否可以使用我的配置来完成这项工作?CentOS 7 ,来自 repo 的 Apache 2.4.6 与最新更新?此时升级服务器不是一种选择。

谢谢你。

4

0 回答 0