首页 > 解决方案 > 配置 Varnish 4 多个域不同端口

问题描述

我得到这个来加载两个网站,但是我无法登录两个 wordpress 网站。

backend websiteone {
    .host = "127.0.0.1";
    .port = "7070";
}
backend websitetwo {
    .host = "127.0.0.1";
    .port = "2082";
}
    sub vcl_recv {
    if (req.http.host ~ "^(.*\.)?websiteone\.com$") {
    set req.backend_hint = websiteone;
    return (hash);
}
    if (req.http.host ~ "^(.*\.)?websitetwo\.com$") {
    set req.backend_hint = websitetwo;
    return (hash);
    }
}

标签: varnish

解决方案


这是我为解决此问题所做的工作:

mkdir /etc/varnish/sites-enabled

cd /etc/varnish/sites-enabled

纳米siteone.com.vcl

sub vcl_recv {
    if (req.http.host == "siteone.com") {
        if (req.url ~ "/(cart|my-account|checkout|addons|/?add-to-cart=)") {
        return (pass);
        }
    }
}

纳米sitetwo.com.vcl

backend sitetwo {
    .host = "127.0.0.1";
    .port = "2082";
}

sub vcl_recv {
       if (req.http.host == "sitetwo.com") {
           set req.backend_hint = sitetwo;
    }
}

然后我不得不编辑 /etc/varnish/default.vcl

cd /etc/清漆/

纳米默认.vcl

如上所示,后端是为 sitetwo 配置的,但是 siteone 的后端是在 default.vcl 中配置的,所以我更改了

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

并将这两行添加到 default.vcl 的底部

 include "sites-enabled/siteone.com.vcl";
 include "sites-enabled/sitetwo.com.vcl";

现在一切似乎都正常工作!如果我必须添加更多站点,我所要做的就是在 /sites-enabled 文件夹中创建 sitetree.com.vcl 并粘贴

backend sitethree {
    .host = "127.0.0.1";
    .port = "port number";
}

sub vcl_recv {
       if (req.http.host == "sitethree.com") {
           set req.backend_hint = sitethree;
    }
}

注意:Siteone 正在运行一个电子商务站点,因此如果您没有运行商店,那么您应该能够在 siteone.com.vcl 中使用以下内容

sub vcl_recv {
       if (req.http.host == "siteone.com") {
           set req.backend_hint = siteone;
    }
}

推荐阅读