繁体   English   中英

Varnish Cache不会做ESI包括

[英]Varnish Cache will not do ESI include

即使是最简单的Varnish Cache ESI测试也无法正常工作。
经过尝试和尝试,我想我在这里问。

基本上它只是不包括ESI文件。 它只是返回HTML而不做它的包含。

这是我的varnish start命令:

varnishd -f /etc/varnish/default.vcl -s malloc,128M -T 127.0.0.1:2000 -a 0.0.0.0:8080;

这是我正在测试的URL:

http://vbox.local:8080/varnish-tests/test.php

我的vcl规则:

1)default.vcl

backend default {  
.host = "127.0.0.1";  
.port = "80";  
}  

sub vcl_fetch {  

  if (req.url ~ "test.php") {  
      esi;  /* Do ESI processing */  
      set beresp.ttl = 24h;  
  } elseif (req.url ~ "esi_1.php") {  
      set beresp.ttl = 1m;  
  }  
return(deliver);  
}  

我的示例测试esi代码

2)test.php

<html>  
<head>  

<?php echo "Time 1: ".time(); ?>  

<br />  

The time 2 is: <esi:include src="/varnish-tests/esi_1.php"/> at this very moment.  

</body>  
</html>  

php到esi包括

3)esi_1.php

<?php
echo "Time 2: ".time();  
?>

我已尝试过上述vcl规则的许多变体。
一切都行不通。 只是看不出我哪里出错了?

任何建议/帮助非常感谢。

谢谢。

问题是Varnish和mod_deflate在这个时候不能很好地协同工作。

删除deflate.conf和deflate.load修复了问题。

干杯。

尝试使用Varnish 3.0 beta1进行测试。 它的一个主要新功能是完全压缩支持(这意味着它现在也适用于ESI):

https://www.varnish-software.com/blog/varnish-cache-30-beta-1-out

有了这个,你可能会避免在你的apache / php压缩处理设置上改变任何东西。

对于Varnish 3.x

在vcl_fetch中,我不得不添加:

set beresp.do_esi = true;

鉴于最新的错误, 此博客文章可能是相关的

似乎某些版本的Varnish不能很好地处理gzip压缩内容。 你有PHP设置来执行gzip压缩吗? 你有托管PHP设置的网络服务器软件来执行gzip压缩吗?

Varnish也可以扼杀形成不良的内容,虽然这似乎不太可能......

不幸的是,我现在没有想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM