首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Varnish 5中多个VCL文件中的后端定义

Varnish 5中多个VCL文件中的后端定义
EN

Stack Overflow用户
提问于 2017-05-08 18:21:32
回答 1查看 800关注 0票数 1

我正在设置一个连接到2个后端服务器(Magento 2个应用程序)的Varnish 5实例。

我使用的是新的Varnish 5特性,可以加载多个VCL文件。为了让事情变得非常简单,我将在我的示例中使用一个后端服务器。

因此,我有一个定义如下的magento.vcl

代码语言:javascript
复制
vcl 4.0;

import std;

# The minimal Varnish version is 4.0
# For SSL offloading, pass the following header in your proxy server or load balancer: 'X-Forwarded-Proto: https'

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

include "/etc/varnish/common.vcl";

和一个top.vcl

代码语言:javascript
复制
vcl 4.0;

import std;

backend default { .host = "127.0.0.1"; }

sub vcl_recv {
    if (req.http.host == "magento2.dev") {
        return (vcl(magento_vcl));
    }
}

然后我跑

代码语言:javascript
复制
service varnish restart
varnishadm
vcl.load magento /etc/varnish/conf.d/magento.vcl
vcl.label magento_vcl magento 
vcl.load top /etc/varnish/top.vcl
vcl.use top
quit

当我浏览到magento2.dev时,几秒钟后我得到一个后端获取错误。只有当我进入magento.vcl并更改后端的名称并发出后端提示时,它才能正常工作。如下所示:

代码语言:javascript
复制
vcl 4.0;

import std;

# The minimal Varnish version is 4.0
# For SSL offloading, pass the following header in your proxy server or load balancer: 'X-Forwarded-Proto: https'

backend magento {
    .host = "127.0.0.1";
    .port = "8088";
}

sub vcl_recv {
    set req.backend_hint = magento;
}

include "/etc/varnish/common.vcl";

为什么我要指定一个后端提示?Varnish不应该根据top.vcl中指定的主机加载不同的VCL吗?还是出了什么问题?

提前谢谢你,

EN

回答 1

Stack Overflow用户

发布于 2017-08-19 19:34:25

似乎varnish确实加载了您通过vcl (标签)指定的vcl。该.vcl应该指定对.vcl所针对的特定后端有效的backend_hint。我不认为有什么问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43845185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档