2016-10-18 111 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].