如何访问 Varnish 管理区域?

Tal*_*boy 2 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
Run Code Online (Sandbox Code Playgroud)

另外,作为一个附带问题(我仍在努力使其工作),清漆是否会缓存任何文件类型,即使它是 RSS 提要或 .php 文件或其他任何文件?

Bra*_*ldt 6

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

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

varnishadm -T localhost:6028
Run Code Online (Sandbox Code Playgroud)

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


至于问题的另一部分,Varnish 会缓存它认为可以安全缓存的任何内容。它不太关注文件类型,而是更多地关注 HTTP 标头。例如,如果用户发送 cookie,默认情况下 Varnish 不会缓存页面,因为 cookie 可能表明用户在动态页面上。默认情况下,Varnish 也只缓存 GET 请求。

查看默认的 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);
}
Run Code Online (Sandbox Code Playgroud)