【问题标题】:selecting a varnish backend using regex capture使用正则表达式捕获选择清漆后端
【发布时间】:2014-06-20 02:07:55
【问题描述】:

我想使用正则表达式捕获在清漆中路由子域。这是我的尝试:

backend gitlab {
    .host = "127.0.0.1";
    .port = "82";
}

backend jenkins {
    .host = "127.0.0.1";
    .port = "83";
}

sub vcl_recv {

    if (req.http.host ~ "^((gitlab|jenkins|ruby))\.") {

        set req.backend = $1;
        return(pass);

    }

    error 405 "No service.";

}

如何在 VCL 中实现这种构造?我宁愿不使用不太优雅的“if-then”模式。

【问题讨论】:

    标签: varnish varnish-vcl


    【解决方案1】:

    您不能使用字符串引用后端。 VCL 编译器不支持它。您也许可以编写一个特殊的导向器(vmod)来为您完成这项工作,但这需要您拿出您的 K&R 副本并开始在 Varnish 源代码树中挖掘。

    如果有一天有人会写一个 VMOD 来做这样的事情,我不会感到惊讶。这将非常有用。

    【讨论】:

    • 该死,这是一个令人讨厌的差距。哦,谢谢你的提醒,我不会再花时间在上面了。我为每个子域案例使用离散的“if-then”块让它工作正常,只是有点笨拙。
    • 几年后...新版本的清漆。这还没有实现吗?
    猜你喜欢
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多