【问题标题】:Tutorial: compilation fails教程:编译失败
【发布时间】:2018-02-25 08:43:15
【问题描述】:

Ubuntu 16.04.2

varnish-4.1.1

我卡在这里: https://varnish-cache.org/docs/4.1/tutorial/starting_varnish.html

整本书中的第一次配置更改。它说:将主机更改为 www.varnish-cache.org 并重新加载。

/etc/varnish/default.vcl

vcl 4.0;

backend default {
    .host = "www.varnish-cache.org";
    .port = "80";
}

我执行了:

sudo service varnish restart

sudo service varnish reload

但无论如何我总是遇到“错误 503 后端提取失败”。

我试过了:

$ sudo varnishd -d -f default.vcl 
Error:
Failed to create vcl_boot/vgc.so: Permission deniedVCL compilation failed

似乎编译失败。你能帮帮我吗?

【问题讨论】:

    标签: varnish varnish-vcl varnish-4


    【解决方案1】:

    由于以下几个原因,这是一个有点破烂的教程:

    • 他们要求您将后端指向一个 DNS 名称。正确的方法是在后端定义中指定 IP
    • 无论您指定什么(DNS 或 IP),它最终都会传递您访问 Varnish 的站点的 Host 标头,并要求后端服务器使用该主机名交付站点。

    那么为什么你会根据教程收到错误:

    • 您访问,例如http://localhost/(或您访问 Varnish 时使用的任何主机名)
    • 然后 Varnish 与 varnish-cache.org 上的 HTTP 服务器对话并请求http://localhost
    • 显然 varnish-cache.org 服务器对此一无所知,而且很可能(根据他们的配置会发出重定向/错误等)因此您看到的错误。

    最好将它指向您自己的网络服务器,然后像这样:

    vcl 4.0;
    
    backend default {
        .host = "127.0.0.1";
        .port = "8080";
    }
    

    以上假设您在与 Varnish 相同的机器上运行 Web 服务器(nginx 或 Apache 等),并使其在端口 8080 上运行。

    【讨论】:

    • varnish-cache.org/docs/4.1/reference/… 主机名似乎是可以接受的。
    • 我不是在争论它是否可以接受。使用 IP 是“最佳实践”,因为它将避免不必要的混淆/期望后端的请求将传递具有相同值的 Host 标头。
    • 这似乎不是问题。到目前为止,我还没有研究最佳实践。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 2021-01-29
    • 2018-02-20
    • 2023-04-08
    • 2016-03-01
    • 2015-08-15
    相关资源
    最近更新 更多