2016-10-18 82 views
0

美好的一天。我需要一些帮助,我不能在清漆中获得任何HIT/MISS响应。 请帮助我..在此先感谢.. 这里是我的default.vcl配置。光油4:远程缓存

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

     sub vcl_recv { 
      if (req.http.host == "www.example.com") { 
      unset req.http.cookie; 
      unset req.http.Vary; 
      } 
      else 
      { 
      return (pass); 
      } 
     } 

     sub vcl_backend_response { 
     set beresp.do_gzip = true; 
     unset beresp.http.Cache-Control; 
     set beresp.ttl = 1h; 
     set beresp.grace = 1w; 
     } 


     sub vcl_deliver { 
     if (obj.hits > 0) { 
     set resp.http.X-Cache = "HIT"; 
     } else { 
     set resp.http.X-Cache = "MISS"; 
     } 
     } 

回答

2

声明唯一的后端是0.0.0.0,你应该声明一个正确的后端IP或DNS。

Varnish是一个反向代理,它不会遵循Header:Host => IP http的方式。它需要显式声明转发请求的位置。

+0

是的,我有它的corrrect IP,它只是一个虚拟/ IP样,但我仍然不能让X-缓存命中/缺失响应 – rkevx21

+0

后台默认{ 。主持人= “marketics.ph”; .port =“80”; } AND req.http.host ==“marketics.ph” – rkevx21

+0

您确定请求正在通过Varnish?当我打开marketics.ph我可以看到Apache的回复不是光油 –

1

您的后端端口指向Varnish应该听取的位置。 Varnish应该在80上进行监听,并且后端默认值应该是Apache现在列出的端口。 在您的VCL将其更改为:

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

你/etc/varnish/varnish.params文件应具有的端口设置为80

VARNISH_LISTEN_PORT=80 

,并在你的http.conf,你应该设置的Apache收听82.

Listen 0.0.0.0:82 

重新启动Apache,然后清漆。现在,您将正确地将流量代理回Apache。我给出的IP是例子,YMMV。

正确的流程:

[Internet] <-> (80)[Varnish] <-> (82)[Apache].