首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Varnish 4:远程缓存

Varnish 4:远程缓存
EN

Stack Overflow用户
提问于 2016-10-18 13:37:31
回答 2查看 244关注 0票数 0

日安。我需要一些帮助,我无法在清漆中得到任何命中/未命中的响应。请帮帮我..提前谢谢..这是我的default.vcl配置。

代码语言:javascript
复制
        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";
         }
        }
EN

回答 2

Stack Overflow用户

发布于 2016-10-18 16:22:33

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

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

票数 2
EN

Stack Overflow用户

发布于 2016-10-18 22:53:05

你的后端端口指向了Varnish应该监听的地方。Varnish应该在80上侦听,并且后端默认值应该是Apache现在列出的端口。在您的VCL中,将其更改为:

代码语言:javascript
复制
backend default {
        .host = "127.0.0.1";
        .port = "82";
        }

您的/etc/varnish/varnish.params文件应将端口设置为80

代码语言:javascript
复制
VARNISH_LISTEN_PORT=80

在您的http.conf中,您应该将Apache设置为在82上侦听。

代码语言:javascript
复制
Listen 0.0.0.0:82

重新启动Apache,然后重新启动Varnish。现在,您将正确地将通信代理返回到Apache。我给出的IP是YMMV的例子。

正确的流程:

代码语言:javascript
复制
[Internet] <-> (80)[Varnish] <-> (82)[Apache].
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40100313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档