2017-09-16 124 views
0

的Ubuntu 16.04.2教程:编译失败

清漆-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 

看来,编译失败。你能帮我吗?

回答

0

这有几个原因有点破教程:

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

那么,为什么你得到一个错误按教程:

  • 您的访问,例如http://localhost/(或者你访问你的Varnish的任何主机名)
  • 然后Varnish与varnish-cache.org上的HTTP服务器对话,并要求http://localhost
  • 显然,varnish-cache.org服务器不知道这个,很可能(因为他们的配置会发出重定向/错误等),因此你看到的错误。

最好是把它指向自己的Web服务器来代替,像这样做:

vcl 4.0; 

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

上述假设你在运行一个Web服务器(nginx的或Apache等)与Varnish相同的机器,并且您使其运行在端口8080.

+0

https://varnish-cache.org/docs/4.1/reference/vcl.html#backend-definition主机名似乎是可以接受的。 – Michael

+0

我不是在争论是否可以接受。这是使用IP的“最佳做法”,因为它可以避免不必要的混淆/期望后端请求将以相同的值传递主机头。 –

+0

这似乎不是问题所在。到目前为止,我还没有学习最佳实践。 – Michael