ESI包含JSON响应

Bra*_*sen 9 varnish esi

我正在努力让ESI包含在JSON上下文中被替换.

以下工作正常.导致ESI标签被实际内容所取代.

<esi:include src="http://domain.com/esipath/" />
Run Code Online (Sandbox Code Playgroud)

这不起作用.ESI标签未被替换.

{
    "test": "<esi:include src="http://domain.com/esipath/" />"
}
Run Code Online (Sandbox Code Playgroud)

我在google上找到了一些资源,并且可能的解决方案似乎设置esi_syntax为0x3,以便varnish跳过检查有效的XML.这似乎不适用于Varnish 4.当我使用运行时参数启动deamon时,我收到以下错误.

 Error: Unknown parameter "esi_syntax".
Run Code Online (Sandbox Code Playgroud)

Varnish 4中是否弃用此设置?

任何想法让这个工作?

小智 14

事实上,该参数在varnish4中进行了描述.您需要做的是激活该功能ESI_DISABLE_XML_CHECK.

对我来说,我编辑/etc/default/varnish(基于debian的系统)并添加

-p feature=+esi_disable_xml_check
Run Code Online (Sandbox Code Playgroud)

到DEAMON_OPTS的参数,例如:

DAEMON_OPTS="-a :6081 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,4GB \
             -p feature=+esi_disable_xml_check"
Run Code Online (Sandbox Code Playgroud)