我有一个包含许多域的专用服务器。有些域有自己的专用 IP,有些 IP 由域共享。
我想为所有域和 IP 设置 Varnish 。
服务器:CentOS 7.2 和 cPanel 11.58
你知道任何cpanel插件吗?或简单的代码或有效的方法,可以自动/轻松地为所有域/IP 设置 Varnish 。
安装 Varnish 后,我将apache端口更改为“8080”。我在 varnish.params 中将端口更改为“80”,在 default.vcl 中更改为“8080”。现在 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;
}
}
最佳答案
您需要通过域名本身而不是其 ip 来定义您的条件。所以假设你有 2 个域: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
的 url或者您可以使用 == "www.foo.com"
匹配 www.foo.com
只是,bar.com
也是如此
关于apache - 如何在具有多个 IP 和域的专用服务器中设置 Varnish?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39339685/