【问题标题】:Name or service not known error Varnish 5.2名称或服务未知错误清漆 5.2
【发布时间】:2019-03-22 17:15:49
【问题描述】:

我有两个“用于实验室目的”的网络服务器,它们有相同的网页。我还安装了 varnish 来做 round_robin 和其他类型的平衡方法。 但是当我把我的网络服务的整个地址“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();
}

如果我只输入网络服务器地址“10.0.0.252”,清漆启动没有错误,但我将如何定义我的页面?还有其他问题,我需要在我的网络服务器端进行任何配置吗?在阿帕奇或什么? 非常感谢。

【问题讨论】:

    标签: varnish varnish-vcl varnish-4


    【解决方案1】:

    .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 的输出。你会在那里得到很多信息。

    【讨论】:

    • 非常感谢您的回复,最后一个问题,我有一个客户端连接到此代理,服务器也连接到代理。要测试我应该打开代理 ip + URL 并应该将我重定向到两个 Web 服务器之一?再次感谢您
    • 将此添加到您的 vcl: sub vcl_backend_response { set beresp.http.used = beresp.backend.ip + bereq.url; } 并且您将在响应的“已使用”标头中获得服务器的 IP 以及发送给它的 URL
    • 哥们,看看我是否理解你,我的清漆应该是这样的:
    • 导入导演; # 加载导向器 vcl 4.0; sub vcl_backend_response { 设置 beresp.http.used = beresp.backend.ip + bereq.url; } 后端服务器 1 { .host = "10.0.0.253"; } 后端服务器2 { .host = "10.0.0.252"; } sub vcl_init { 新栏 = director.round_robin(); bar.add_backend(server1); bar.add_backend(server2); } sub vcl_recv { 设置 req.url = "/blog" + req.url;设置 req.backend_hint = bar.backend(); }
    【解决方案2】:
    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();
    }
    

    【讨论】:

    • 是的,它应该是这样的。
    猜你喜欢
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 2013-12-14
    相关资源
    最近更新 更多