我如何访问Varnish管理区域?

时间:2014-04-26 20:59:40

标签: caching varnish varnish-vcl

这是一个愚蠢的问题,抱歉......我试过谷歌搜索,但无济于事。

我认为这只是访问example.com:6082,但似乎并没有加载任何内容。

# # Telnet admin interface listen address and port
VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1
VARNISH_ADMIN_LISTEN_PORT=6082

另外,作为一个附带问题(我还在努力让它工作),varnish缓存ANY文件类型,即使它是RSS提要或.php文件或其他什么?

1 个答案:

答案 0 :(得分:3)

Varnish没有管理区域。管理端口用于CLI varnishadm工具。它通常会自动接收端口。您还可以使用管理端口从自定义工具连接到Varnish并发出管理命令。

查看varnishadm工具的文档。这是指定端口的示例:

varnishadm -T localhost:6028

有一个名为VAC (Varnish Administration Console)的工具,它提供了一个基于Web的管理控制台,但它非常昂贵,并且是Varnish Plus的一部分。


至于问题的其他部分,Varnish会缓存它认为可以安全缓存的任何内容。它看起来并不像文件类型那么多,但在HTTP标题上看起来更多。例如,如果用户发送cookie,则默认情况下Varnish不会缓存页面,因为cookie可能表示用户在动态页面上。 Varnish默认只缓存GET请求。

查看default vcl。对于版本3:

sub vcl_recv {
    if (req.restarts == 0) {
        if (req.http.x-forwarded-for) {
            set req.http.X-Forwarded-For =
                req.http.X-Forwarded-For + ", " + client.ip;
        } else {
            set req.http.X-Forwarded-For = client.ip;
        }
    }
    if (req.request != "GET" &&
      req.request != "HEAD" &&
      req.request != "PUT" &&
      req.request != "POST" &&
      req.request != "TRACE" &&
      req.request != "OPTIONS" &&
      req.request != "DELETE") {
        /* Non-RFC2616 or CONNECT which is weird. */
        return (pipe);
    }
    if (req.request != "GET" && req.request != "HEAD") {
        /* We only deal with GET and HEAD by default */
        return (pass);
    }
    if (req.http.Authorization || req.http.Cookie) {
        /* Not cacheable by default */
        return (pass);
    }
    return (lookup);
}