清漆4:远程缓存

时间:2016-10-18 05:37:31

标签: varnish varnish-vcl

美好的一天。我需要一些帮助,我不能在清漆中获得任何HIT / MISS响应。 请帮帮我..先谢谢.. 这是我的default.vcl配置。

        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 :(得分:2)

您声明的唯一后端是0.0.0.0,您应该声明正确的后端ip或dns。

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

答案 1 :(得分: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,然后重新启动Varnish。现在,您可以正确地将流量代理回Apache。我给出的IP就是例子,YMMV。

适当的流程:

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