名称或服务未知错误Varnish 5.2

时间:2018-10-17 23:09:26

标签: varnish varnish-vcl varnish-4

我有两个“用于实验室目的”的Web服务器,它们具有相同的网页。我还安装了清漆来做round_robin和其他种类的平衡方法。 但是,当我将Web服务的整个地址放在“ 10.0.0.252/blog”时,我的清漆将返回以下错误:后端主机“ 10.0.0.253/blog” 名称或服务未知

import directors;    # load the directors

backend server1 {
    .host = "10.0.0.253/blog";
}
backend server2 {
    .host = "10.0.0.252/blog";
}

sub vcl_init {
    new bar = directors.round_robin();
    bar.add_backend(server1);
    bar.add_backend(server2);
}

sub vcl_recv {
    # send all traffic to the bar director:
    set req.backend_hint = bar.backend();
}

如果我仅将Web服务器地址放在“ 10.0.0.252”,则清漆开始时没有错误,但是如何定义页面?以及其他问题,我需要在Web服务器端进行任何配置吗?在阿帕奇(Apache)还是什么? 非常感谢。

2 个答案:

答案 0 :(得分:0)

.host使用IP或域名,因此:

backend server1 {
    .host = "10.0.0.253";
}
backend server2 {
    .host = "10.0.0.252";
}

如果您想在所有请求前添加“ / blog”,请添加

set req.url = "/blog" + req.url;

在``vcl_recv''的开头。

要检查请求的去向和URL,请将其添加到您的VCL:

sub vcl_backend_response {
    set beresp.http.used = beresp.backend.ip + bereq.url;
}

另外,在发出请求时查看varnishlog -g request的输出。您将在那里获得很多信息。

答案 1 :(得分:0)

import directors;    
# load the directors


vcl 4.0;

sub vcl_backend_response {
    set beresp.http.used = beresp.backend.ip + bereq.url;
}

backend server1 {
    .host = "10.0.0.253";
}
backend server2 {
    .host = "10.0.0.252";
}

sub vcl_init {
    new bar = directors.round_robin();
    bar.add_backend(server1);
    bar.add_backend(server2);
}

sub vcl_recv {
   set req.url = "/blog" + req.url;
    set req.backend_hint = bar.backend();
}