如何在具有多个IP和域的专用服务器中设置Varnish?

时间:2016-09-06 02:13:08

标签: apache caching centos cpanel varnish

我有一个包含许多域的专用服务器。有些域有自己的专用IP,有些IP由域共享。

我想为所有域名和IP设置清漆。

服务器:带有cPanel 11.58的CentOS 7.2

你知道任何cpanel插件吗?或简单的代码或有效的方法,可以自动/轻松地为所有域/ IP设置清漆。

安装清漆后,我将apache端口更改为" 8080"。我将端口更改为" 80"在varnish.params和" 8080"在default.vcl中。现在,varnish适用于服务器的主IP和域。

我尝试通过以下方法修改default.vcl,但在我尝试加载后,varnish会出错。我很困惑并尝试了很多东西来解决它,但遗憾的是没有任何效果。

backend example1 {
    .host = "5.135.166.39";
    .port = "8080";
}

backend example2 {
    .host = "46.105.40.241";
    .port = "8080";
}
sub vcl_recv {

    if (server.ip == "5.135.166.39") {
        set req.backend = example1; 
    } elseif (server.ip == "46.105.40.241") {
        set req.backend = example2;
    } else {
        set req.backend = default;
    }
}

1 个答案:

答案 0 :(得分:0)

您需要通过域名本身而不是ip来定义您的条件。所以,假设你有2种毒素:

{p> www.foo.com A record 5.135.166.39 www.bar.com A record 46.105.40.241

vcl_recv

if (req.http.host ~ "foo.com") { set req.backend = example1; } if (req.http.host ~ "bar.com") { set req.backend = example2; } 内,您需要执行以下操作:

~

使用foo.bar来匹配包含== "www.foo.com"的任何网址,或者您只能使用www.foo.com来匹配bar.com var _getPorts = function (){ return _portList; } var _portList = [{ "code": "0101", "portOfEntry": "Portland, ME" }, { "code": "0102", "portOfEntry": "Bangor, ME" }, { "code": "0103", "portOfEntry": "Eastport, ME" }, { "code": "0104", "portOfEntry": "Jackman, ME" }, ... 也是如此