在 Apache mod_lua CentOS 7 中使用 LuaOutputFilter 时响应体大小的问题

我在使用Apache配置中的过滤器时遇到了很多问题。 使用的服务器运行着 CentOS 7,可用的 Apache 版本是 2.4.6

我在文档中找到了很多示例来进行测试。例如:

http.conf:

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

Lua 脚本:

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: Register LuaOutputFilter scripts as changing the content and content-length by default, when run my mod_filter. Previously, growing or shrinking a response that started with Content-Length set would require mod_filter and FilterProtocol change=yes. [Eric Covener] Note: Not present in 2.4.7 CHANGES

我尝试了很多,但是都没有成功。 我还尝试过使用本地的 Apache mod_substitute 来解决这个问题,但是没有成功,因为我试图删除的内容在服务器响应中跨越了多行。

我的问题是: 在我的配置中,是否有可能让它正常工作? CentOS 7,Apache 2.4.6 来自最新的更新的 repo? 在这个时候升级服务器不是一个选择。

谢谢。

原文链接 https://stackoverflow.com/questions/70728628

点赞