用varnish + regex替换页面中的内容

时间:2013-04-04 15:51:26

标签: regex caching webserver varnish varnish-vcl

如果我希望我的清漆缓存服务器在提供或存储页面(vcl_fetch?)之前从后端替换页面内的内容(即:更改div上的类),那该怎么办呢?

我想使用简单的正则表达式来执行替换,因为我认为它本身支持清漆。

1 个答案:

答案 0 :(得分:4)

Varnish本身不支持修改响应正文。你需要一个Varnish模块(vmod)。

Aivars Kalvans有libvmod-rewrite,这正是你想要的。然而,vmod是一个概念证明,根据Aivars,它还没有准备好用于生产。在任何情况下,您都可以将它作为起点。

如果您使用的是Apache,则可以使用mod_ext_filter修改响应正文。这是mod_ext_filters文档中的一个示例。由于您可以将响应主体传递给任何外部命令,因此很容易对内容进行必要的修改。

# mod_ext_filter directive to define a filter which
# replaces text in the response
#
ExtFilterDefine fixtext mode=output intype=text/html cmd="/bin/sed s/verdana/arial/g"

<Location />
# core directive to cause the fixtext filter to
# be run on output
SetOutputFilter fixtext
</Location>